text:
var antlr4 = require('antlr4/index');

// This class defines a complete listener for a parse tree produced by CParser.
function CListener() {
	antlr4.tree.ParseTreeListener.call(this);
	return this;
}

CListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype);
CListener.prototype.constructor = CListener;

// Enter a parse tree produced by CParser#primaryExpression.
CListener.prototype.enterPrimaryExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#primaryExpression.
CListener.prototype.exitPrimaryExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#genericSelection.
CListener.prototype.enterGenericSelection = function(ctx) {
};

// Exit a parse tree produced by CParser#genericSelection.
CListener.prototype.exitGenericSelection = function(ctx) {
};

// Enter a parse tree produced by CParser#genericAssocList.
CListener.prototype.enterGenericAssocList = function(ctx) {
};

// Exit a parse tree produced by CParser#genericAssocList.
CListener.prototype.exitGenericAssocList = function(ctx) {
};

// Enter a parse tree produced by CParser#genericAssociation.
CListener.prototype.enterGenericAssociation = function(ctx) {
};

// Exit a parse tree produced by CParser#genericAssociation.
CListener.prototype.exitGenericAssociation = function(ctx) {
};

// Enter a parse tree produced by CParser#postfixExpression.
CListener.prototype.enterPostfixExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#postfixExpression.
CListener.prototype.exitPostfixExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#argumentExpressionList.
CListener.prototype.enterArgumentExpressionList = function(ctx) {
};

// Exit a parse tree produced by CParser#argumentExpressionList.
CListener.prototype.exitArgumentExpressionList = function(ctx) {
};

// Enter a parse tree produced by CParser#unaryExpression.
CListener.prototype.enterUnaryExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#unaryExpression.
CListener.prototype.exitUnaryExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#unaryOperator.
CListener.prototype.enterUnaryOperator = function(ctx) {
};

// Exit a parse tree produced by CParser#unaryOperator.
CListener.prototype.exitUnaryOperator = function(ctx) {
};

// Enter a parse tree produced by CParser#castExpression.
CListener.prototype.enterCastExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#castExpression.
CListener.prototype.exitCastExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#multiplicativeExpression.
CListener.prototype.enterMultiplicativeExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#multiplicativeExpression.
CListener.prototype.exitMultiplicativeExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#additiveExpression.
CListener.prototype.enterAdditiveExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#additiveExpression.
CListener.prototype.exitAdditiveExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#shiftExpression.
CListener.prototype.enterShiftExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#shiftExpression.
CListener.prototype.exitShiftExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#relationalExpression.
CListener.prototype.enterRelationalExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#relationalExpression.
CListener.prototype.exitRelationalExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#equalityExpression.
CListener.prototype.enterEqualityExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#equalityExpression.
CListener.prototype.exitEqualityExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#andExpression.
CListener.prototype.enterAndExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#andExpression.
CListener.prototype.exitAndExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#exclusiveOrExpression.
CListener.prototype.enterExclusiveOrExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#exclusiveOrExpression.
CListener.prototype.exitExclusiveOrExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#inclusiveOrExpression.
CListener.prototype.enterInclusiveOrExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#inclusiveOrExpression.
CListener.prototype.exitInclusiveOrExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#logicalAndExpression.
CListener.prototype.enterLogicalAndExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#logicalAndExpression.
CListener.prototype.exitLogicalAndExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#logicalOrExpression.
CListener.prototype.enterLogicalOrExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#logicalOrExpression.
CListener.prototype.exitLogicalOrExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#conditionalExpression.
CListener.prototype.enterConditionalExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#conditionalExpression.
CListener.prototype.exitConditionalExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#assignmentExpression.
CListener.prototype.enterAssignmentExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#assignmentExpression.
CListener.prototype.exitAssignmentExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#assignmentOperator.
CListener.prototype.enterAssignmentOperator = function(ctx) {
};

// Exit a parse tree produced by CParser#assignmentOperator.
CListener.prototype.exitAssignmentOperator = function(ctx) {
};

// Enter a parse tree produced by CParser#expression.
CListener.prototype.enterExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#expression.
CListener.prototype.exitExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#constantExpression.
CListener.prototype.enterConstantExpression = function(ctx) {
};

// Exit a parse tree produced by CParser#constantExpression.
CListener.prototype.exitConstantExpression = function(ctx) {
};

// Enter a parse tree produced by CParser#declaration.
CListener.prototype.enterDeclaration = function(ctx) {
};

// Exit a parse tree produced by CParser#declaration.
CListener.prototype.exitDeclaration = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationSpecifiers.
CListener.prototype.enterDeclarationSpecifiers = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationSpecifiers.
CListener.prototype.exitDeclarationSpecifiers = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationSpecifiers2.
CListener.prototype.enterDeclarationSpecifiers2 = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationSpecifiers2.
CListener.prototype.exitDeclarationSpecifiers2 = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationSpecifier.
CListener.prototype.enterDeclarationSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationSpecifier.
CListener.prototype.exitDeclarationSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#initDeclaratorList.
CListener.prototype.enterInitDeclaratorList = function(ctx) {
};

// Exit a parse tree produced by CParser#initDeclaratorList.
CListener.prototype.exitInitDeclaratorList = function(ctx) {
};

// Enter a parse tree produced by CParser#initDeclarator.
CListener.prototype.enterInitDeclarator = function(ctx) {
};

// Exit a parse tree produced by CParser#initDeclarator.
CListener.prototype.exitInitDeclarator = function(ctx) {
};

// Enter a parse tree produced by CParser#storageClassSpecifier.
CListener.prototype.enterStorageClassSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#storageClassSpecifier.
CListener.prototype.exitStorageClassSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#typeSpecifier.
CListener.prototype.enterTypeSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#typeSpecifier.
CListener.prototype.exitTypeSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#structOrUnionSpecifier.
CListener.prototype.enterStructOrUnionSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#structOrUnionSpecifier.
CListener.prototype.exitStructOrUnionSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#structOrUnion.
CListener.prototype.enterStructOrUnion = function(ctx) {
};

// Exit a parse tree produced by CParser#structOrUnion.
CListener.prototype.exitStructOrUnion = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclarationsBlock.
CListener.prototype.enterStructDeclarationsBlock = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclarationsBlock.
CListener.prototype.exitStructDeclarationsBlock = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclarationList.
CListener.prototype.enterStructDeclarationList = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclarationList.
CListener.prototype.exitStructDeclarationList = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclaration.
CListener.prototype.enterStructDeclaration = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclaration.
CListener.prototype.exitStructDeclaration = function(ctx) {
};

// Enter a parse tree produced by CParser#specifierQualifierList.
CListener.prototype.enterSpecifierQualifierList = function(ctx) {
};

// Exit a parse tree produced by CParser#specifierQualifierList.
CListener.prototype.exitSpecifierQualifierList = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclaratorList.
CListener.prototype.enterStructDeclaratorList = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclaratorList.
CListener.prototype.exitStructDeclaratorList = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclarator.
CListener.prototype.enterStructDeclarator = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclarator.
CListener.prototype.exitStructDeclarator = function(ctx) {
};

// Enter a parse tree produced by CParser#enumSpecifier.
CListener.prototype.enterEnumSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#enumSpecifier.
CListener.prototype.exitEnumSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#enumeratorList.
CListener.prototype.enterEnumeratorList = function(ctx) {
};

// Exit a parse tree produced by CParser#enumeratorList.
CListener.prototype.exitEnumeratorList = function(ctx) {
};

// Enter a parse tree produced by CParser#enumerator.
CListener.prototype.enterEnumerator = function(ctx) {
};

// Exit a parse tree produced by CParser#enumerator.
CListener.prototype.exitEnumerator = function(ctx) {
};

// Enter a parse tree produced by CParser#enumerationConstant.
CListener.prototype.enterEnumerationConstant = function(ctx) {
};

// Exit a parse tree produced by CParser#enumerationConstant.
CListener.prototype.exitEnumerationConstant = function(ctx) {
};

// Enter a parse tree produced by CParser#atomicTypeSpecifier.
CListener.prototype.enterAtomicTypeSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#atomicTypeSpecifier.
CListener.prototype.exitAtomicTypeSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#typeQualifier.
CListener.prototype.enterTypeQualifier = function(ctx) {
};

// Exit a parse tree produced by CParser#typeQualifier.
CListener.prototype.exitTypeQualifier = function(ctx) {
};

// Enter a parse tree produced by CParser#functionSpecifier.
CListener.prototype.enterFunctionSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#functionSpecifier.
CListener.prototype.exitFunctionSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#alignmentSpecifier.
CListener.prototype.enterAlignmentSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#alignmentSpecifier.
CListener.prototype.exitAlignmentSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#declarator.
CListener.prototype.enterDeclarator = function(ctx) {
};

// Exit a parse tree produced by CParser#declarator.
CListener.prototype.exitDeclarator = function(ctx) {
};

// Enter a parse tree produced by CParser#directDeclarator.
CListener.prototype.enterDirectDeclarator = function(ctx) {
};

// Exit a parse tree produced by CParser#directDeclarator.
CListener.prototype.exitDirectDeclarator = function(ctx) {
};

// Enter a parse tree produced by CParser#gccDeclaratorExtension.
CListener.prototype.enterGccDeclaratorExtension = function(ctx) {
};

// Exit a parse tree produced by CParser#gccDeclaratorExtension.
CListener.prototype.exitGccDeclaratorExtension = function(ctx) {
};

// Enter a parse tree produced by CParser#gccAttributeSpecifier.
CListener.prototype.enterGccAttributeSpecifier = function(ctx) {
};

// Exit a parse tree produced by CParser#gccAttributeSpecifier.
CListener.prototype.exitGccAttributeSpecifier = function(ctx) {
};

// Enter a parse tree produced by CParser#gccAttributeList.
CListener.prototype.enterGccAttributeList = function(ctx) {
};

// Exit a parse tree produced by CParser#gccAttributeList.
CListener.prototype.exitGccAttributeList = function(ctx) {
};

// Enter a parse tree produced by CParser#gccAttribute.
CListener.prototype.enterGccAttribute = function(ctx) {
};

// Exit a parse tree produced by CParser#gccAttribute.
CListener.prototype.exitGccAttribute = function(ctx) {
};

// Enter a parse tree produced by CParser#nestedParenthesesBlock.
CListener.prototype.enterNestedParenthesesBlock = function(ctx) {
};

// Exit a parse tree produced by CParser#nestedParenthesesBlock.
CListener.prototype.exitNestedParenthesesBlock = function(ctx) {
};

// Enter a parse tree produced by CParser#pointer.
CListener.prototype.enterPointer = function(ctx) {
};

// Exit a parse tree produced by CParser#pointer.
CListener.prototype.exitPointer = function(ctx) {
};

// Enter a parse tree produced by CParser#typeQualifierList.
CListener.prototype.enterTypeQualifierList = function(ctx) {
};

// Exit a parse tree produced by CParser#typeQualifierList.
CListener.prototype.exitTypeQualifierList = function(ctx) {
};

// Enter a parse tree produced by CParser#parameterTypeList.
CListener.prototype.enterParameterTypeList = function(ctx) {
};

// Exit a parse tree produced by CParser#parameterTypeList.
CListener.prototype.exitParameterTypeList = function(ctx) {
};

// Enter a parse tree produced by CParser#parameterList.
CListener.prototype.enterParameterList = function(ctx) {
};

// Exit a parse tree produced by CParser#parameterList.
CListener.prototype.exitParameterList = function(ctx) {
};

// Enter a parse tree produced by CParser#parameterDeclaration.
CListener.prototype.enterParameterDeclaration = function(ctx) {
};

// Exit a parse tree produced by CParser#parameterDeclaration.
CListener.prototype.exitParameterDeclaration = function(ctx) {
};

// Enter a parse tree produced by CParser#identifierList.
CListener.prototype.enterIdentifierList = function(ctx) {
};

// Exit a parse tree produced by CParser#identifierList.
CListener.prototype.exitIdentifierList = function(ctx) {
};

// Enter a parse tree produced by CParser#typeName.
CListener.prototype.enterTypeName = function(ctx) {
};

// Exit a parse tree produced by CParser#typeName.
CListener.prototype.exitTypeName = function(ctx) {
};

// Enter a parse tree produced by CParser#abstractDeclarator.
CListener.prototype.enterAbstractDeclarator = function(ctx) {
};

// Exit a parse tree produced by CParser#abstractDeclarator.
CListener.prototype.exitAbstractDeclarator = function(ctx) {
};

// Enter a parse tree produced by CParser#directAbstractDeclarator.
CListener.prototype.enterDirectAbstractDeclarator = function(ctx) {
};

// Exit a parse tree produced by CParser#directAbstractDeclarator.
CListener.prototype.exitDirectAbstractDeclarator = function(ctx) {
};

// Enter a parse tree produced by CParser#typedefName.
CListener.prototype.enterTypedefName = function(ctx) {
};

// Exit a parse tree produced by CParser#typedefName.
CListener.prototype.exitTypedefName = function(ctx) {
};

// Enter a parse tree produced by CParser#initializer.
CListener.prototype.enterInitializer = function(ctx) {
};

// Exit a parse tree produced by CParser#initializer.
CListener.prototype.exitInitializer = function(ctx) {
};

// Enter a parse tree produced by CParser#initializerList.
CListener.prototype.enterInitializerList = function(ctx) {
};

// Exit a parse tree produced by CParser#initializerList.
CListener.prototype.exitInitializerList = function(ctx) {
};

// Enter a parse tree produced by CParser#designation.
CListener.prototype.enterDesignation = function(ctx) {
};

// Exit a parse tree produced by CParser#designation.
CListener.prototype.exitDesignation = function(ctx) {
};

// Enter a parse tree produced by CParser#designatorList.
CListener.prototype.enterDesignatorList = function(ctx) {
};

// Exit a parse tree produced by CParser#designatorList.
CListener.prototype.exitDesignatorList = function(ctx) {
};

// Enter a parse tree produced by CParser#designator.
CListener.prototype.enterDesignator = function(ctx) {
};

// Exit a parse tree produced by CParser#designator.
CListener.prototype.exitDesignator = function(ctx) {
};

// Enter a parse tree produced by CParser#staticAssertDeclaration.
CListener.prototype.enterStaticAssertDeclaration = function(ctx) {
};

// Exit a parse tree produced by CParser#staticAssertDeclaration.
CListener.prototype.exitStaticAssertDeclaration = function(ctx) {
};

// Enter a parse tree produced by CParser#statement.
CListener.prototype.enterStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#statement.
CListener.prototype.exitStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#labeledStatement.
CListener.prototype.enterLabeledStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#labeledStatement.
CListener.prototype.exitLabeledStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#compoundStatement.
CListener.prototype.enterCompoundStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#compoundStatement.
CListener.prototype.exitCompoundStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#blockItemList.
CListener.prototype.enterBlockItemList = function(ctx) {
};

// Exit a parse tree produced by CParser#blockItemList.
CListener.prototype.exitBlockItemList = function(ctx) {
};

// Enter a parse tree produced by CParser#blockItem.
CListener.prototype.enterBlockItem = function(ctx) {
};

// Exit a parse tree produced by CParser#blockItem.
CListener.prototype.exitBlockItem = function(ctx) {
};

// Enter a parse tree produced by CParser#specialMethodCall.
CListener.prototype.enterSpecialMethodCall = function(ctx) {
};

// Exit a parse tree produced by CParser#specialMethodCall.
CListener.prototype.exitSpecialMethodCall = function(ctx) {
};

// Enter a parse tree produced by CParser#expressionStatement.
CListener.prototype.enterExpressionStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#expressionStatement.
CListener.prototype.exitExpressionStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#selectionStatement.
CListener.prototype.enterSelectionStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#selectionStatement.
CListener.prototype.exitSelectionStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#iterationStatement.
CListener.prototype.enterIterationStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#iterationStatement.
CListener.prototype.exitIterationStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#jumpStatement.
CListener.prototype.enterJumpStatement = function(ctx) {
};

// Exit a parse tree produced by CParser#jumpStatement.
CListener.prototype.exitJumpStatement = function(ctx) {
};

// Enter a parse tree produced by CParser#compilationUnit.
CListener.prototype.enterCompilationUnit = function(ctx) {
};

// Exit a parse tree produced by CParser#compilationUnit.
CListener.prototype.exitCompilationUnit = function(ctx) {
};

// Enter a parse tree produced by CParser#translationUnit.
CListener.prototype.enterTranslationUnit = function(ctx) {
};

// Exit a parse tree produced by CParser#translationUnit.
CListener.prototype.exitTranslationUnit = function(ctx) {
};

// Enter a parse tree produced by CParser#externalDeclaration.
CListener.prototype.enterExternalDeclaration = function(ctx) {
};

// Exit a parse tree produced by CParser#externalDeclaration.
CListener.prototype.exitExternalDeclaration = function(ctx) {
};

// Enter a parse tree produced by CParser#functionDefinition.
CListener.prototype.enterFunctionDefinition = function(ctx) {
};

// Exit a parse tree produced by CParser#functionDefinition.
CListener.prototype.exitFunctionDefinition = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationList.
CListener.prototype.enterDeclarationList = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationList.
CListener.prototype.exitDeclarationList = function(ctx) {
};

// Enter a parse tree produced by CParser#primaryExpression_DropletFile.
CListener.prototype.enterPrimaryExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#primaryExpression_DropletFile.
CListener.prototype.exitPrimaryExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#genericSelection_DropletFile.
CListener.prototype.enterGenericSelection_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#genericSelection_DropletFile.
CListener.prototype.exitGenericSelection_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#genericAssocList_DropletFile.
CListener.prototype.enterGenericAssocList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#genericAssocList_DropletFile.
CListener.prototype.exitGenericAssocList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#genericAssociation_DropletFile.
CListener.prototype.enterGenericAssociation_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#genericAssociation_DropletFile.
CListener.prototype.exitGenericAssociation_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#postfixExpression_DropletFile.
CListener.prototype.enterPostfixExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#postfixExpression_DropletFile.
CListener.prototype.exitPostfixExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#argumentExpressionList_DropletFile.
CListener.prototype.enterArgumentExpressionList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#argumentExpressionList_DropletFile.
CListener.prototype.exitArgumentExpressionList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#unaryExpression_DropletFile.
CListener.prototype.enterUnaryExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#unaryExpression_DropletFile.
CListener.prototype.exitUnaryExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#unaryOperator_DropletFile.
CListener.prototype.enterUnaryOperator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#unaryOperator_DropletFile.
CListener.prototype.exitUnaryOperator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#castExpression_DropletFile.
CListener.prototype.enterCastExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#castExpression_DropletFile.
CListener.prototype.exitCastExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#multiplicativeExpression_DropletFile.
CListener.prototype.enterMultiplicativeExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#multiplicativeExpression_DropletFile.
CListener.prototype.exitMultiplicativeExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#additiveExpression_DropletFile.
CListener.prototype.enterAdditiveExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#additiveExpression_DropletFile.
CListener.prototype.exitAdditiveExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#shiftExpression_DropletFile.
CListener.prototype.enterShiftExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#shiftExpression_DropletFile.
CListener.prototype.exitShiftExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#relationalExpression_DropletFile.
CListener.prototype.enterRelationalExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#relationalExpression_DropletFile.
CListener.prototype.exitRelationalExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#equalityExpression_DropletFile.
CListener.prototype.enterEqualityExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#equalityExpression_DropletFile.
CListener.prototype.exitEqualityExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#andExpression_DropletFile.
CListener.prototype.enterAndExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#andExpression_DropletFile.
CListener.prototype.exitAndExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#exclusiveOrExpression_DropletFile.
CListener.prototype.enterExclusiveOrExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#exclusiveOrExpression_DropletFile.
CListener.prototype.exitExclusiveOrExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#inclusiveOrExpression_DropletFile.
CListener.prototype.enterInclusiveOrExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#inclusiveOrExpression_DropletFile.
CListener.prototype.exitInclusiveOrExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#logicalAndExpression_DropletFile.
CListener.prototype.enterLogicalAndExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#logicalAndExpression_DropletFile.
CListener.prototype.exitLogicalAndExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#logicalOrExpression_DropletFile.
CListener.prototype.enterLogicalOrExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#logicalOrExpression_DropletFile.
CListener.prototype.exitLogicalOrExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#conditionalExpression_DropletFile.
CListener.prototype.enterConditionalExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#conditionalExpression_DropletFile.
CListener.prototype.exitConditionalExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#assignmentExpression_DropletFile.
CListener.prototype.enterAssignmentExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#assignmentExpression_DropletFile.
CListener.prototype.exitAssignmentExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#assignmentOperator_DropletFile.
CListener.prototype.enterAssignmentOperator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#assignmentOperator_DropletFile.
CListener.prototype.exitAssignmentOperator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#expression_DropletFile.
CListener.prototype.enterExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#expression_DropletFile.
CListener.prototype.exitExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#constantExpression_DropletFile.
CListener.prototype.enterConstantExpression_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#constantExpression_DropletFile.
CListener.prototype.exitConstantExpression_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#declaration_DropletFile.
CListener.prototype.enterDeclaration_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#declaration_DropletFile.
CListener.prototype.exitDeclaration_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationSpecifiers_DropletFile.
CListener.prototype.enterDeclarationSpecifiers_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationSpecifiers_DropletFile.
CListener.prototype.exitDeclarationSpecifiers_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationSpecifiers2_DropletFile.
CListener.prototype.enterDeclarationSpecifiers2_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationSpecifiers2_DropletFile.
CListener.prototype.exitDeclarationSpecifiers2_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationSpecifier_DropletFile.
CListener.prototype.enterDeclarationSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationSpecifier_DropletFile.
CListener.prototype.exitDeclarationSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#initDeclaratorList_DropletFile.
CListener.prototype.enterInitDeclaratorList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#initDeclaratorList_DropletFile.
CListener.prototype.exitInitDeclaratorList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#initDeclarator_DropletFile.
CListener.prototype.enterInitDeclarator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#initDeclarator_DropletFile.
CListener.prototype.exitInitDeclarator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#storageClassSpecifier_DropletFile.
CListener.prototype.enterStorageClassSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#storageClassSpecifier_DropletFile.
CListener.prototype.exitStorageClassSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#typeSpecifier_DropletFile.
CListener.prototype.enterTypeSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#typeSpecifier_DropletFile.
CListener.prototype.exitTypeSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structOrUnionSpecifier_DropletFile.
CListener.prototype.enterStructOrUnionSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structOrUnionSpecifier_DropletFile.
CListener.prototype.exitStructOrUnionSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structOrUnion_DropletFile.
CListener.prototype.enterStructOrUnion_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structOrUnion_DropletFile.
CListener.prototype.exitStructOrUnion_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclarationsBlock_DropletFile.
CListener.prototype.enterStructDeclarationsBlock_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclarationsBlock_DropletFile.
CListener.prototype.exitStructDeclarationsBlock_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclarationList_DropletFile.
CListener.prototype.enterStructDeclarationList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclarationList_DropletFile.
CListener.prototype.exitStructDeclarationList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclaration_DropletFile.
CListener.prototype.enterStructDeclaration_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclaration_DropletFile.
CListener.prototype.exitStructDeclaration_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#specifierQualifierList_DropletFile.
CListener.prototype.enterSpecifierQualifierList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#specifierQualifierList_DropletFile.
CListener.prototype.exitSpecifierQualifierList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclaratorList_DropletFile.
CListener.prototype.enterStructDeclaratorList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclaratorList_DropletFile.
CListener.prototype.exitStructDeclaratorList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#structDeclarator_DropletFile.
CListener.prototype.enterStructDeclarator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#structDeclarator_DropletFile.
CListener.prototype.exitStructDeclarator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#enumSpecifier_DropletFile.
CListener.prototype.enterEnumSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#enumSpecifier_DropletFile.
CListener.prototype.exitEnumSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#enumeratorList_DropletFile.
CListener.prototype.enterEnumeratorList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#enumeratorList_DropletFile.
CListener.prototype.exitEnumeratorList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#enumerator_DropletFile.
CListener.prototype.enterEnumerator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#enumerator_DropletFile.
CListener.prototype.exitEnumerator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#enumerationConstant_DropletFile.
CListener.prototype.enterEnumerationConstant_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#enumerationConstant_DropletFile.
CListener.prototype.exitEnumerationConstant_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#atomicTypeSpecifier_DropletFile.
CListener.prototype.enterAtomicTypeSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#atomicTypeSpecifier_DropletFile.
CListener.prototype.exitAtomicTypeSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#typeQualifier_DropletFile.
CListener.prototype.enterTypeQualifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#typeQualifier_DropletFile.
CListener.prototype.exitTypeQualifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#functionSpecifier_DropletFile.
CListener.prototype.enterFunctionSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#functionSpecifier_DropletFile.
CListener.prototype.exitFunctionSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#alignmentSpecifier_DropletFile.
CListener.prototype.enterAlignmentSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#alignmentSpecifier_DropletFile.
CListener.prototype.exitAlignmentSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#declarator_DropletFile.
CListener.prototype.enterDeclarator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#declarator_DropletFile.
CListener.prototype.exitDeclarator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#directDeclarator_DropletFile.
CListener.prototype.enterDirectDeclarator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#directDeclarator_DropletFile.
CListener.prototype.exitDirectDeclarator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#gccDeclaratorExtension_DropletFile.
CListener.prototype.enterGccDeclaratorExtension_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#gccDeclaratorExtension_DropletFile.
CListener.prototype.exitGccDeclaratorExtension_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#gccAttributeSpecifier_DropletFile.
CListener.prototype.enterGccAttributeSpecifier_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#gccAttributeSpecifier_DropletFile.
CListener.prototype.exitGccAttributeSpecifier_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#gccAttributeList_DropletFile.
CListener.prototype.enterGccAttributeList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#gccAttributeList_DropletFile.
CListener.prototype.exitGccAttributeList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#gccAttribute_DropletFile.
CListener.prototype.enterGccAttribute_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#gccAttribute_DropletFile.
CListener.prototype.exitGccAttribute_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#nestedParenthesesBlock_DropletFile.
CListener.prototype.enterNestedParenthesesBlock_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#nestedParenthesesBlock_DropletFile.
CListener.prototype.exitNestedParenthesesBlock_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#pointer_DropletFile.
CListener.prototype.enterPointer_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#pointer_DropletFile.
CListener.prototype.exitPointer_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#typeQualifierList_DropletFile.
CListener.prototype.enterTypeQualifierList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#typeQualifierList_DropletFile.
CListener.prototype.exitTypeQualifierList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#parameterTypeList_DropletFile.
CListener.prototype.enterParameterTypeList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#parameterTypeList_DropletFile.
CListener.prototype.exitParameterTypeList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#parameterList_DropletFile.
CListener.prototype.enterParameterList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#parameterList_DropletFile.
CListener.prototype.exitParameterList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#parameterDeclaration_DropletFile.
CListener.prototype.enterParameterDeclaration_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#parameterDeclaration_DropletFile.
CListener.prototype.exitParameterDeclaration_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#identifierList_DropletFile.
CListener.prototype.enterIdentifierList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#identifierList_DropletFile.
CListener.prototype.exitIdentifierList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#typeName_DropletFile.
CListener.prototype.enterTypeName_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#typeName_DropletFile.
CListener.prototype.exitTypeName_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#abstractDeclarator_DropletFile.
CListener.prototype.enterAbstractDeclarator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#abstractDeclarator_DropletFile.
CListener.prototype.exitAbstractDeclarator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#directAbstractDeclarator_DropletFile.
CListener.prototype.enterDirectAbstractDeclarator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#directAbstractDeclarator_DropletFile.
CListener.prototype.exitDirectAbstractDeclarator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#typedefName_DropletFile.
CListener.prototype.enterTypedefName_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#typedefName_DropletFile.
CListener.prototype.exitTypedefName_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#initializer_DropletFile.
CListener.prototype.enterInitializer_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#initializer_DropletFile.
CListener.prototype.exitInitializer_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#initializerList_DropletFile.
CListener.prototype.enterInitializerList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#initializerList_DropletFile.
CListener.prototype.exitInitializerList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#designation_DropletFile.
CListener.prototype.enterDesignation_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#designation_DropletFile.
CListener.prototype.exitDesignation_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#designatorList_DropletFile.
CListener.prototype.enterDesignatorList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#designatorList_DropletFile.
CListener.prototype.exitDesignatorList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#designator_DropletFile.
CListener.prototype.enterDesignator_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#designator_DropletFile.
CListener.prototype.exitDesignator_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#staticAssertDeclaration_DropletFile.
CListener.prototype.enterStaticAssertDeclaration_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#staticAssertDeclaration_DropletFile.
CListener.prototype.exitStaticAssertDeclaration_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#statement_DropletFile.
CListener.prototype.enterStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#statement_DropletFile.
CListener.prototype.exitStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#labeledStatement_DropletFile.
CListener.prototype.enterLabeledStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#labeledStatement_DropletFile.
CListener.prototype.exitLabeledStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#compoundStatement_DropletFile.
CListener.prototype.enterCompoundStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#compoundStatement_DropletFile.
CListener.prototype.exitCompoundStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#blockItemList_DropletFile.
CListener.prototype.enterBlockItemList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#blockItemList_DropletFile.
CListener.prototype.exitBlockItemList_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#blockItem_DropletFile.
CListener.prototype.enterBlockItem_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#blockItem_DropletFile.
CListener.prototype.exitBlockItem_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#specialMethodCall_DropletFile.
CListener.prototype.enterSpecialMethodCall_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#specialMethodCall_DropletFile.
CListener.prototype.exitSpecialMethodCall_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#expressionStatement_DropletFile.
CListener.prototype.enterExpressionStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#expressionStatement_DropletFile.
CListener.prototype.exitExpressionStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#selectionStatement_DropletFile.
CListener.prototype.enterSelectionStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#selectionStatement_DropletFile.
CListener.prototype.exitSelectionStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#iterationStatement_DropletFile.
CListener.prototype.enterIterationStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#iterationStatement_DropletFile.
CListener.prototype.exitIterationStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#jumpStatement_DropletFile.
CListener.prototype.enterJumpStatement_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#jumpStatement_DropletFile.
CListener.prototype.exitJumpStatement_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#compilationUnit_DropletFile.
CListener.prototype.enterCompilationUnit_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#compilationUnit_DropletFile.
CListener.prototype.exitCompilationUnit_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#translationUnit_DropletFile.
CListener.prototype.enterTranslationUnit_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#translationUnit_DropletFile.
CListener.prototype.exitTranslationUnit_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#externalDeclaration_DropletFile.
CListener.prototype.enterExternalDeclaration_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#externalDeclaration_DropletFile.
CListener.prototype.exitExternalDeclaration_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#functionDefinition_DropletFile.
CListener.prototype.enterFunctionDefinition_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#functionDefinition_DropletFile.
CListener.prototype.exitFunctionDefinition_DropletFile = function(ctx) {
};

// Enter a parse tree produced by CParser#declarationList_DropletFile.
CListener.prototype.enterDeclarationList_DropletFile = function(ctx) {
};

// Exit a parse tree produced by CParser#declarationList_DropletFile.
CListener.prototype.exitDeclarationList_DropletFile = function(ctx) {
};

exports.CListener = CListener;


text:
package common

import (
	"errors"
	"time"
)

// Engine is the interface all caching engines must adhere to
type Engine interface {
	Exists(string) bool
	Get(string) ([]byte, error)
	Put(string, []byte, time.Time) error

	Expire(string) error
	IsExpired(string) bool

	Lock(string) error
	Unlock(string) error
	IsLocked(string) bool
}

// Errors
var (
	ErrNonExistentKey   = errors.New("non-existent key")
	ErrKeyAlreadyLocked = errors.New("key already locked")
	ErrInvalidData      = errors.New("invalid data")
	ErrEngineLocked     = errors.New("data is being regenerated by another process")
)

redpajama_set_name: RedPajamaGithub


text:
Talk to Push
=====

A small program that presses Alt or another push-to-talk key when your microphone hears you


text:
package jdbreport.helper;

import java.awt.Color;
import java.awt.Component;
import java.awt.Image;
import java.awt.Rectangle;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.text.StyledDocument;

import jdbreport.grid.JReportGrid;
import jdbreport.grid.JReportGrid.TextReportRenderer;
import jdbreport.model.CellStyle;
import jdbreport.model.ReportModel;

/**
 * @version 3.0.13.12.2014
 * @author Andrey Kholmanskih
 *
 */
public class ImageReportRenderer extends TextReportRenderer {

	private static final long serialVersionUID = 1L;

	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {

		this.hasFocus = hasFocus;

		CellStyle style = ((JReportGrid) table).getCellStyle(cell.getStyleId());
		if (isSelected && !((JReportGrid) table).isPrintState()) {
			super.setForeground(table.getSelectionForeground());
			super.setBackground(table.getSelectionBackground());
		} else {
			Color color = style.getForegroundColor();

			super
					.setForeground((color != null) ? color : table
							.getForeground());

			color = style.getBackground();

			super
					.setBackground((color != null) ? color : table
							.getBackground());
		}
		setBorder(noFocusBorder);

		if (hasFocus) {
			if (!isSelected && table.isCellEditable(row, column)) {
				Color color;
				color = UIManager.getColor("Table.focusCellForeground");
				if (color != null) {
					super.setForeground(color);
				}
				color = UIManager.getColor("Table.focusCellBackground");
				if (color != null) {
					super.setBackground(color);
				}
			}
		}

		setText("");
		StyledDocument doc = getStyledDocument();

		if (value != null) {
			doc.setParagraphAttributes(0, 0, style.getAttributeSet(), true);

			prepareIcon(((JReportGrid) table).getReportModel(), row, column);
		}
		return this;
	}

	public int getTextHeight(ReportModel model, int row, int column) {
		if (cell.getValue() != null && !cell.isScaleIcon()
				&& cell.getValue() instanceof ImageValue) {
			AbstractImageValue<?> v = (AbstractImageValue<?>) cell.getValue();
			return v.getIcon().getIconHeight()
					+ model.getRowModel().getRowMargin();
		}
		return 0;
	}

	protected void prepareIcon(ReportModel model, int row, int column
			) {
		Icon icon = ((AbstractImageValue<?>) cell.getValue()).getIcon();
		if (icon != null) {
			if (cell.isScaleIcon() && icon instanceof ImageIcon) {
				Image image = ((ImageIcon) icon).getImage();
				Rectangle r = model.getCellRect(row, column, false,
						getComponentOrientation().isLeftToRight());
				image = image.getScaledInstance((int) r.getWidth() - 2, (int) r
						.getHeight() - 2, Image.SCALE_FAST);
				icon = new ImageIcon(image);
			}
			insertIcon(icon);
		}
	}

}


text:
from __future__ import unicode_literals

from django.db import models, migrations

class Migration(migrations.Migration):

    dependencies = [
        ('backend', '0002_auto_20150709_0936'),
    ]

    operations = [
        migrations.AlterField(
            model_name='story',
            name='author',
            field=models.CharField(max_length=200),
        ),
    ]


text:
require 'spec_helper'
require 'puppet_spec/files'

require 'puppet/pops'
require 'puppet/loaders'

describe 'loader helper classes' do
  it 'NamedEntry holds values and is frozen' do
    ne = Puppet::Pops::Loader::Loader::NamedEntry.new('name', 'value', 'origin')
    expect(ne.frozen?).to be_true
    expect(ne.typed_name).to eql('name')
    expect(ne.origin).to eq('origin')
    expect(ne.value).to eq('value')
  end

  it 'TypedName holds values and is frozen' do
    tn = Puppet::Pops::Loader::Loader::TypedName.new(:function, '::foo::bar')
    expect(tn.frozen?).to be_true
    expect(tn.type).to eq(:function)
    expect(tn.name_parts).to eq(['foo', 'bar'])
    expect(tn.name).to eq('foo::bar')
    expect(tn.qualified).to be_true
  end
end

describe 'loaders' do
  include PuppetSpec::Files

  let(:module_without_metadata) { File.join(config_dir('wo_metadata_module'), 'modules') }
  let(:mix_4x_and_3x_functions) { config_dir('mix_4x_and_3x_functions') }
  let(:module_with_metadata) { File.join(config_dir('single_module'), 'modules') }
  let(:dependent_modules_with_metadata) { config_dir('dependent_modules_with_metadata') }
  let(:empty_test_env) { environment_for() }

  # Loaders caches the puppet_system_loader, must reset between tests
  before(:each) { Puppet::Pops::Loaders.clear() }

  it 'creates a puppet_system loader' do
    loaders = Puppet::Pops::Loaders.new(empty_test_env)
    expect(loaders.puppet_system_loader()).to be_a(Puppet::Pops::Loader::ModuleLoaders::FileBased)
  end

  it 'creates an environment loader' do
    loaders = Puppet::Pops::Loaders.new(empty_test_env)

    expect(loaders.public_environment_loader()).to be_a(Puppet::Pops::Loader::SimpleEnvironmentLoader)
    expect(loaders.public_environment_loader().to_s).to eql("(SimpleEnvironmentLoader 'environment:*test*')")
    expect(loaders.private_environment_loader()).to be_a(Puppet::Pops::Loader::DependencyLoader)
    expect(loaders.private_environment_loader().to_s).to eql("(DependencyLoader 'environment' [])")
  end

  it 'can load a function using a qualified or unqualified name from a module with metadata' do
    loaders = Puppet::Pops::Loaders.new(environment_for(module_with_metadata))
    modulea_loader = loaders.public_loader_for_module('modulea')

    unqualified_function = modulea_loader.load_typed(typed_name(:function, 'rb_func_a')).value
    qualified_function = modulea_loader.load_typed(typed_name(:function, 'modulea::rb_func_a')).value

    expect(unqualified_function).to be_a(Puppet::Functions::Function)
    expect(qualified_function).to be_a(Puppet::Functions::Function)
    expect(unqualified_function.class.name).to eq('rb_func_a')
    expect(qualified_function.class.name).to eq('modulea::rb_func_a')
  end

  it 'can load a function with a qualified name from module without metadata' do
    loaders = Puppet::Pops::Loaders.new(environment_for(module_without_metadata))

    moduleb_loader = loaders.public_loader_for_module('moduleb')
    function = moduleb_loader.load_typed(typed_name(:function, 'moduleb::rb_func_b')).value

    expect(function).to be_a(Puppet::Functions::Function)
    expect(function.class.name).to eq('moduleb::rb_func_b')
  end

  it 'cannot load an unqualified function from a module without metadata' do
    loaders = Puppet::Pops::Loaders.new(environment_for(module_without_metadata))

    moduleb_loader = loaders.public_loader_for_module('moduleb')

    expect(moduleb_loader.load_typed(typed_name(:function, 'rb_func_b'))).to be_nil
  end

  it 'makes all other modules visible to a module without metadata' do
    env = environment_for(module_with_metadata, module_without_metadata)
    loaders = Puppet::Pops::Loaders.new(env)

    moduleb_loader = loaders.private_loader_for_module('moduleb')
    function = moduleb_loader.load_typed(typed_name(:function, 'moduleb::rb_func_b')).value

    expect(function.call({})).to eql("I am modulea::rb_func_a() + I am moduleb::rb_func_b()")
  end

  it 'makes dependent modules visible to a module with metadata' do
    env = environment_for(dependent_modules_with_metadata)
    loaders = Puppet::Pops::Loaders.new(env)

    moduleb_loader = loaders.private_loader_for_module('user')
    function = moduleb_loader.load_typed(typed_name(:function, 'user::caller')).value

    expect(function.call({})).to eql("usee::callee() was told 'passed value' + I am user::caller()")
  end

  context 'with scope' do
    let(:env) { environment_for(mix_4x_and_3x_functions) }
    let(:scope) { Puppet::Parser::Compiler.new(Puppet::Node.new("test", :environment => env)).newscope(nil) }
    let(:loader) { Puppet::Pops::Loaders.new(env).private_loader_for_module('user') }

    it 'can call 3x function in dependent module from a 4x function' do
      Puppet.override({ :current_environment => scope.environment, :global_scope => scope }) do
        function = loader.load_typed(typed_name(:function, 'user::caller')).value
        expect(function.call(scope)).to eql("usee::callee() got 'first' - usee::callee() got 'second'")
      end
    end

    it 'can call 3x function and propagate caller scope from a 4x function' do
      Puppet.override({ :current_environment => scope.environment, :global_scope => scope }) do
        function = loader.load_typed(typed_name(:function, 'user::caller_ws')).value
        expect(function.call(scope, 'passed in scope')).to eql("usee::callee_ws() got 'passed in scope'")
      end
    end
  end

  it 'can load a function more than once from modules' do
    env = environment_for(dependent_modules_with_metadata)
    loaders = Puppet::Pops::Loaders.new(env)

    moduleb_loader = loaders.private_loader_for_module('user')
    function = moduleb_loader.load_typed(typed_name(:function, 'user::caller')).value
    expect(function.call({})).to eql("usee::callee() was told 'passed value' + I am user::caller()")

    function = moduleb_loader.load_typed(typed_name(:function, 'user::caller')).value
    expect(function.call({})).to eql("usee::callee() was told 'passed value' + I am user::caller()")
  end

  def environment_for(*module_paths)
    Puppet::Node::Environment.create(:'*test*', module_paths)
  end

  def typed_name(type, name)
    Puppet::Pops::Loader::Loader::TypedName.new(type, name)
  end

  def config_dir(config_name)
    my_fixture(config_name)
  end
end


text:
/* ocsp.h */
/*
 * Written by Tom Titchener <Tom_Titchener@groove.net> for the OpenSSL
 * project.
 */

/*
 * History: This file was transfered to Richard Levitte from CertCo by Kathy
 * Weinhold in mid-spring 2000 to be included in OpenSSL or released as a
 * patch kit.
 */

/* ====================================================================
 * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
 *
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 *    endorse or promote products derived from this software without
 *    prior written permission. For written permission, please contact
 *    openssl-core@openssl.org.
 *
 * 5. Products derived from this software may not be called "OpenSSL"
 *    nor may "OpenSSL" appear in their names without prior written
 *    permission of the OpenSSL Project.
 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
 *
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 *
 * This product includes cryptographic software written by Eric Young
 * (eay@cryptsoft.com).  This product includes software written by Tim
 * Hudson (tjh@cryptsoft.com).
 *
 */

#ifndef HEADER_OCSP_H
# define HEADER_OCSP_H

# include <openssl/ossl_typ.h>
# include <openssl/x509.h>
# include <openssl/x509v3.h>
# include <openssl/safestack.h>

#ifdef  __cplusplus
extern "C" {
#endif

/* Various flags and values */

# define OCSP_DEFAULT_NONCE_LENGTH       16

# define OCSP_NOCERTS                    0x1
# define OCSP_NOINTERN                   0x2
# define OCSP_NOSIGS                     0x4
# define OCSP_NOCHAIN                    0x8
# define OCSP_NOVERIFY                   0x10
# define OCSP_NOEXPLICIT                 0x20
# define OCSP_NOCASIGN                   0x40
# define OCSP_NODELEGATED                0x80
# define OCSP_NOCHECKS                   0x100
# define OCSP_TRUSTOTHER                 0x200
# define OCSP_RESPID_KEY                 0x400
# define OCSP_NOTIME                     0x800

/*-  CertID ::= SEQUENCE {
 *       hashAlgorithm            AlgorithmIdentifier,
 *       issuerNameHash     OCTET STRING, -- Hash of Issuer's DN
 *       issuerKeyHash      OCTET STRING, -- Hash of Issuers public key (excluding the tag & length fields)
 *       serialNumber       CertificateSerialNumber }
 */
typedef struct ocsp_cert_id_st {
    X509_ALGOR *hashAlgorithm;
    ASN1_OCTET_STRING *issuerNameHash;
    ASN1_OCTET_STRING *issuerKeyHash;
    ASN1_INTEGER *serialNumber;
} OCSP_CERTID;

DECLARE_STACK_OF(OCSP_CERTID)

/*-  Request ::=     SEQUENCE {
 *       reqCert                    CertID,
 *       singleRequestExtensions    [0] EXPLICIT Extensions OPTIONAL }
 */
typedef struct ocsp_one_request_st {
    OCSP_CERTID *reqCert;
    STACK_OF(X509_EXTENSION) *singleRequestExtensions;
} OCSP_ONEREQ;

DECLARE_STACK_OF(OCSP_ONEREQ)
DECLARE_ASN1_SET_OF(OCSP_ONEREQ)

/*-  TBSRequest      ::=     SEQUENCE {
 *       version             [0] EXPLICIT Version DEFAULT v1,
 *       requestorName       [1] EXPLICIT GeneralName OPTIONAL,
 *       requestList             SEQUENCE OF Request,
 *       requestExtensions   [2] EXPLICIT Extensions OPTIONAL }
 */
typedef struct ocsp_req_info_st {
    ASN1_INTEGER *version;
    GENERAL_NAME *requestorName;
    STACK_OF(OCSP_ONEREQ) *requestList;
    STACK_OF(X509_EXTENSION) *requestExtensions;
} OCSP_REQINFO;

/*-  Signature       ::=     SEQUENCE {
 *       signatureAlgorithm   AlgorithmIdentifier,
 *       signature            BIT STRING,
 *       certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
 */
typedef struct ocsp_signature_st {
    X509_ALGOR *signatureAlgorithm;
    ASN1_BIT_STRING *signature;
    STACK_OF(X509) *certs;
} OCSP_SIGNATURE;

/*-  OCSPRequest     ::=     SEQUENCE {
 *       tbsRequest                  TBSRequest,
 *       optionalSignature   [0]     EXPLICIT Signature OPTIONAL }
 */
typedef struct ocsp_request_st {
    OCSP_REQINFO *tbsRequest;
    OCSP_SIGNATURE *optionalSignature; /* OPTIONAL */
} OCSP_REQUEST;

/*-  OCSPResponseStatus ::= ENUMERATED {
 *       successful            (0),      --Response has valid confirmations
 *       malformedRequest      (1),      --Illegal confirmation request
 *       internalError         (2),      --Internal error in issuer
 *       tryLater              (3),      --Try again later
 *                                       --(4) is not used
 *       sigRequired           (5),      --Must sign the request
 *       unauthorized          (6)       --Request unauthorized
 *   }
 */
# define OCSP_RESPONSE_STATUS_SUCCESSFUL          0
# define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST     1
# define OCSP_RESPONSE_STATUS_INTERNALERROR        2
# define OCSP_RESPONSE_STATUS_TRYLATER             3
# define OCSP_RESPONSE_STATUS_SIGREQUIRED          5
# define OCSP_RESPONSE_STATUS_UNAUTHORIZED         6

/*-  ResponseBytes ::=       SEQUENCE {
 *       responseType   OBJECT IDENTIFIER,
 *       response       OCTET STRING }
 */
typedef struct ocsp_resp_bytes_st {
    ASN1_OBJECT *responseType;
    ASN1_OCTET_STRING *response;
} OCSP_RESPBYTES;

/*-  OCSPResponse ::= SEQUENCE {
 *      responseStatus         OCSPResponseStatus,
 *      responseBytes          [0] EXPLICIT ResponseBytes OPTIONAL }
 */
struct ocsp_response_st {
    ASN1_ENUMERATED *responseStatus;
    OCSP_RESPBYTES *responseBytes;
};

/*-  ResponderID ::= CHOICE {
 *      byName   [1] Name,
 *      byKey    [2] KeyHash }
 */
# define V_OCSP_RESPID_NAME 0
# define V_OCSP_RESPID_KEY  1
struct ocsp_responder_id_st {
    int type;
    union {
        X509_NAME *byName;
        ASN1_OCTET_STRING *byKey;
    } value;
};

DECLARE_STACK_OF(OCSP_RESPID)
DECLARE_ASN1_FUNCTIONS(OCSP_RESPID)

/*-  KeyHash ::= OCTET STRING --SHA-1 hash of responder's public key
 *                            --(excluding the tag and length fields)
 */

/*-  RevokedInfo ::= SEQUENCE {
 *       revocationTime              GeneralizedTime,
 *       revocationReason    [0]     EXPLICIT CRLReason OPTIONAL }
 */
typedef struct ocsp_revoked_info_st {
    ASN1_GENERALIZEDTIME *revocationTime;
    ASN1_ENUMERATED *revocationReason;
} OCSP_REVOKEDINFO;

/*-  CertStatus ::= CHOICE {
 *       good                [0]     IMPLICIT NULL,
 *       revoked             [1]     IMPLICIT RevokedInfo,
 *       unknown             [2]     IMPLICIT UnknownInfo }
 */
# define V_OCSP_CERTSTATUS_GOOD    0
# define V_OCSP_CERTSTATUS_REVOKED 1
# define V_OCSP_CERTSTATUS_UNKNOWN 2
typedef struct ocsp_cert_status_st {
    int type;
    union {
        ASN1_NULL *good;
        OCSP_REVOKEDINFO *revoked;
        ASN1_NULL *unknown;
    } value;
} OCSP_CERTSTATUS;

/*-  SingleResponse ::= SEQUENCE {
 *      certID                       CertID,
 *      certStatus                   CertStatus,
 *      thisUpdate                   GeneralizedTime,
 *      nextUpdate           [0]     EXPLICIT GeneralizedTime OPTIONAL,
 *      singleExtensions     [1]     EXPLICIT Extensions OPTIONAL }
 */
typedef struct ocsp_single_response_st {
    OCSP_CERTID *certId;
    OCSP_CERTSTATUS *certStatus;
    ASN1_GENERALIZEDTIME *thisUpdate;
    ASN1_GENERALIZEDTIME *nextUpdate;
    STACK_OF(X509_EXTENSION) *singleExtensions;
} OCSP_SINGLERESP;

DECLARE_STACK_OF(OCSP_SINGLERESP)
DECLARE_ASN1_SET_OF(OCSP_SINGLERESP)

/*-  ResponseData ::= SEQUENCE {
 *      version              [0] EXPLICIT Version DEFAULT v1,
 *      responderID              ResponderID,
 *      producedAt               GeneralizedTime,
 *      responses                SEQUENCE OF SingleResponse,
 *      responseExtensions   [1] EXPLICIT Extensions OPTIONAL }
 */
typedef struct ocsp_response_data_st {
    ASN1_INTEGER *version;
    OCSP_RESPID *responderId;
    ASN1_GENERALIZEDTIME *producedAt;
    STACK_OF(OCSP_SINGLERESP) *responses;
    STACK_OF(X509_EXTENSION) *responseExtensions;
} OCSP_RESPDATA;

/*-  BasicOCSPResponse       ::= SEQUENCE {
 *      tbsResponseData      ResponseData,
 *      signatureAlgorithm   AlgorithmIdentifier,
 *      signature            BIT STRING,
 *      certs                [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
 */
  /*
   * Note 1: The value for "signature" is specified in the OCSP rfc2560 as
   * follows: "The value for the signature SHALL be computed on the hash of
   * the DER encoding ResponseData." This means that you must hash the
   * DER-encoded tbsResponseData, and then run it through a crypto-signing
   * function, which will (at least w/RSA) do a hash-'n'-private-encrypt
   * operation.  This seems a bit odd, but that's the spec.  Also note that
   * the data structures do not leave anywhere to independently specify the
   * algorithm used for the initial hash. So, we look at the
   * signature-specification algorithm, and try to do something intelligent.
   * -- Kathy Weinhold, CertCo
   */
  /*
   * Note 2: It seems that the mentioned passage from RFC 2560 (section
   * 4.2.1) is open for interpretation.  I've done tests against another
   * responder, and found that it doesn't do the double hashing that the RFC
   * seems to say one should.  Therefore, all relevant functions take a flag
   * saying which variant should be used.  -- Richard Levitte, OpenSSL team
   * and CeloCom
   */
typedef struct ocsp_basic_response_st {
    OCSP_RESPDATA *tbsResponseData;
    X509_ALGOR *signatureAlgorithm;
    ASN1_BIT_STRING *signature;
    STACK_OF(X509) *certs;
} OCSP_BASICRESP;

/*-
 *   CRLReason ::= ENUMERATED {
 *        unspecified             (0),
 *        keyCompromise           (1),
 *        cACompromise            (2),
 *        affiliationChanged      (3),
 *        superseded              (4),
 *        cessationOfOperation    (5),
 *        certificateHold         (6),
 *        removeFromCRL           (8) }
 */
# define OCSP_REVOKED_STATUS_NOSTATUS               -1
# define OCSP_REVOKED_STATUS_UNSPECIFIED             0
# define OCSP_REVOKED_STATUS_KEYCOMPROMISE           1
# define OCSP_REVOKED_STATUS_CACOMPROMISE            2
# define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED      3
# define OCSP_REVOKED_STATUS_SUPERSEDED              4
# define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION    5
# define OCSP_REVOKED_STATUS_CERTIFICATEHOLD         6
# define OCSP_REVOKED_STATUS_REMOVEFROMCRL           8

/*-
 * CrlID ::= SEQUENCE {
 *     crlUrl               [0]     EXPLICIT IA5String OPTIONAL,
 *     crlNum               [1]     EXPLICIT INTEGER OPTIONAL,
 *     crlTime              [2]     EXPLICIT GeneralizedTime OPTIONAL }
 */
typedef struct ocsp_crl_id_st {
    ASN1_IA5STRING *crlUrl;
    ASN1_INTEGER *crlNum;
    ASN1_GENERALIZEDTIME *crlTime;
} OCSP_CRLID;

/*-
 * ServiceLocator ::= SEQUENCE {
 *      issuer    Name,
 *      locator   AuthorityInfoAccessSyntax OPTIONAL }
 */
typedef struct ocsp_service_locator_st {
    X509_NAME *issuer;
    STACK_OF(ACCESS_DESCRIPTION) *locator;
} OCSP_SERVICELOC;

# define PEM_STRING_OCSP_REQUEST "OCSP REQUEST"
# define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE"

# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p)

# define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p)

# define PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \
     (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,bp,(char **)x,cb,NULL)

# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb)(OCSP_RESPONSE *)PEM_ASN1_read_bio(\
     (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,bp,(char **)x,cb,NULL)

# define PEM_write_bio_OCSP_REQUEST(bp,o) \
    PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\
                        bp,(char *)o, NULL,NULL,0,NULL,NULL)

# define PEM_write_bio_OCSP_RESPONSE(bp,o) \
    PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\
                        bp,(char *)o, NULL,NULL,0,NULL,NULL)

# define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o)

# define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o)

# define OCSP_REQUEST_sign(o,pkey,md) \
        ASN1_item_sign(ASN1_ITEM_rptr(OCSP_REQINFO),\
                o->optionalSignature->signatureAlgorithm,NULL,\
                o->optionalSignature->signature,o->tbsRequest,pkey,md)

# define OCSP_BASICRESP_sign(o,pkey,md,d) \
        ASN1_item_sign(ASN1_ITEM_rptr(OCSP_RESPDATA),o->signatureAlgorithm,NULL,\
                o->signature,o->tbsResponseData,pkey,md)

# define OCSP_REQUEST_verify(a,r) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_REQINFO),\
        a->optionalSignature->signatureAlgorithm,\
        a->optionalSignature->signature,a->tbsRequest,r)

# define OCSP_BASICRESP_verify(a,r,d) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_RESPDATA),\
        a->signatureAlgorithm,a->signature,a->tbsResponseData,r)

# define ASN1_BIT_STRING_digest(data,type,md,len) \
        ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len)

# define OCSP_CERTSTATUS_dup(cs)\
                (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\
                (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs))

OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id);

OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, char *path, OCSP_REQUEST *req);
OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
                               int maxline);
int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx);
void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx);
int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req);
int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
                             const char *name, const char *value);

OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer);

OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst,
                              X509_NAME *issuerName,
                              ASN1_BIT_STRING *issuerKey,
                              ASN1_INTEGER *serialNumber);

OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid);

int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len);
int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len);
int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs);
int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req);

int OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm);
int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert);

int OCSP_request_sign(OCSP_REQUEST *req,
                      X509 *signer,
                      EVP_PKEY *key,
                      const EVP_MD *dgst,
                      STACK_OF(X509) *certs, unsigned long flags);

int OCSP_response_status(OCSP_RESPONSE *resp);
OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp);

int OCSP_resp_count(OCSP_BASICRESP *bs);
OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
                            ASN1_GENERALIZEDTIME **revtime,
                            ASN1_GENERALIZEDTIME **thisupd,
                            ASN1_GENERALIZEDTIME **nextupd);
int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
                          int *reason,
                          ASN1_GENERALIZEDTIME **revtime,
                          ASN1_GENERALIZEDTIME **thisupd,
                          ASN1_GENERALIZEDTIME **nextupd);
int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
                        ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec);

int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs,
                        X509_STORE *store, unsigned long flags);

int OCSP_parse_url(char *url, char **phost, char **pport, char **ppath,
                   int *pssl);

int OCSP_id_issuer_cmp(OCSP_CERTID *a, OCSP_CERTID *b);
int OCSP_id_cmp(OCSP_CERTID *a, OCSP_CERTID *b);

int OCSP_request_onereq_count(OCSP_REQUEST *req);
OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i);
OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one);
int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd,
                      ASN1_OCTET_STRING **pikeyHash,
                      ASN1_INTEGER **pserial, OCSP_CERTID *cid);
int OCSP_request_is_signed(OCSP_REQUEST *req);
OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs);
OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp,
                                        OCSP_CERTID *cid,
                                        int status, int reason,
                                        ASN1_TIME *revtime,
                                        ASN1_TIME *thisupd,
                                        ASN1_TIME *nextupd);
int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert);
int OCSP_basic_sign(OCSP_BASICRESP *brsp,
                    X509 *signer, EVP_PKEY *key, const EVP_MD *dgst,
                    STACK_OF(X509) *certs, unsigned long flags);

X509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim);

X509_EXTENSION *OCSP_accept_responses_new(char **oids);

X509_EXTENSION *OCSP_archive_cutoff_new(char *tim);

X509_EXTENSION *OCSP_url_svcloc_new(X509_NAME *issuer, char **urls);

int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x);
int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos);
int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, ASN1_OBJECT *obj,
                                int lastpos);
int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos);
X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc);
X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc);
void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit,
                                int *idx);
int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit,
                              unsigned long flags);
int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc);

int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x);
int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos);
int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, ASN1_OBJECT *obj, int lastpos);
int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos);
X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc);
X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc);
void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx);
int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit,
                             unsigned long flags);
int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc);

int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x);
int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos);
int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, ASN1_OBJECT *obj,
                                  int lastpos);
int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit,
                                       int lastpos);
X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc);
X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc);
void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit,
                                  int *idx);
int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value,
                                int crit, unsigned long flags);
int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc);

int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x);
int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos);
int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, ASN1_OBJECT *obj,
                                   int lastpos);
int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit,
                                        int lastpos);
X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc);
X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc);
void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit,
                                   int *idx);
int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value,
                                 int crit, unsigned long flags);
int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc);

DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP)
DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS)
DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO)
DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP)
DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA)
DECLARE_ASN1_FUNCTIONS(OCSP_RESPID)
DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE)
DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES)
DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ)
DECLARE_ASN1_FUNCTIONS(OCSP_CERTID)
DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST)
DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE)
DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO)
DECLARE_ASN1_FUNCTIONS(OCSP_CRLID)
DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC)

const char *OCSP_response_status_str(long s);
const char *OCSP_cert_status_str(long s);
const char *OCSP_crl_reason_str(long s);

int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags);
int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags);

int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
                      X509_STORE *st, unsigned long flags);

/* BEGIN ERROR CODES */
/*
 * The following lines are auto generated by the script mkerr.pl. Any changes
 * made after this point may be overwritten when the script is next run.
 */
void ERR_load_OCSP_strings(void);

/* Error codes for the OCSP functions. */

/* Function codes. */
# define OCSP_F_ASN1_STRING_ENCODE                        100
# define OCSP_F_D2I_OCSP_NONCE                            102
# define OCSP_F_OCSP_BASIC_ADD1_STATUS                    103
# define OCSP_F_OCSP_BASIC_SIGN                           104
# define OCSP_F_OCSP_BASIC_VERIFY                         105
# define OCSP_F_OCSP_CERT_ID_NEW                          101
# define OCSP_F_OCSP_CHECK_DELEGATED                      106
# define OCSP_F_OCSP_CHECK_IDS                            107
# define OCSP_F_OCSP_CHECK_ISSUER                         108
# define OCSP_F_OCSP_CHECK_VALIDITY                       115
# define OCSP_F_OCSP_MATCH_ISSUERID                       109
# define OCSP_F_OCSP_PARSE_URL                            114
# define OCSP_F_OCSP_REQUEST_SIGN                         110
# define OCSP_F_OCSP_REQUEST_VERIFY                       116
# define OCSP_F_OCSP_RESPONSE_GET1_BASIC                  111
# define OCSP_F_OCSP_SENDREQ_BIO                          112
# define OCSP_F_OCSP_SENDREQ_NBIO                         117
# define OCSP_F_PARSE_HTTP_LINE1                          118
# define OCSP_F_REQUEST_VERIFY                            113

/* Reason codes. */
# define OCSP_R_BAD_DATA                                  100
# define OCSP_R_CERTIFICATE_VERIFY_ERROR                  101
# define OCSP_R_DIGEST_ERR                                102
# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD                 122
# define OCSP_R_ERROR_IN_THISUPDATE_FIELD                 123
# define OCSP_R_ERROR_PARSING_URL                         121
# define OCSP_R_MISSING_OCSPSIGNING_USAGE                 103
# define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE              124
# define OCSP_R_NOT_BASIC_RESPONSE                        104
# define OCSP_R_NO_CERTIFICATES_IN_CHAIN                  105
# define OCSP_R_NO_CONTENT                                106
# define OCSP_R_NO_PUBLIC_KEY                             107
# define OCSP_R_NO_RESPONSE_DATA                          108
# define OCSP_R_NO_REVOKED_TIME                           109
# define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE    110
# define OCSP_R_REQUEST_NOT_SIGNED                        128
# define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA      111
# define OCSP_R_ROOT_CA_NOT_TRUSTED                       112
# define OCSP_R_SERVER_READ_ERROR                         113
# define OCSP_R_SERVER_RESPONSE_ERROR                     114
# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR               115
# define OCSP_R_SERVER_WRITE_ERROR                        116
# define OCSP_R_SIGNATURE_FAILURE                         117
# define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND              118
# define OCSP_R_STATUS_EXPIRED                            125
# define OCSP_R_STATUS_NOT_YET_VALID                      126
# define OCSP_R_STATUS_TOO_OLD                            127
# define OCSP_R_UNKNOWN_MESSAGE_DIGEST                    119
# define OCSP_R_UNKNOWN_NID                               120
# define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE            129

#ifdef  __cplusplus
}
#endif
#endif


text:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/default_background_colour"
    android:padding="3dp">

    <com.daimajia.androidviewhover.BlurLayout
        android:id="@+id/blProfile"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="@dimen/activity_horizontal_margin">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/source"
            android:layout_centerInParent="true"
            android:contentDescription="@null"
            android:scaleType="fitXY"
            android:src="@drawable/kid" />
    </com.daimajia.androidviewhover.BlurLayout>

    <com.romainpiel.shimmer.ShimmerTextView
        android:id="@+id/stv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#66000000"
        android:text="@string/app_name"
        android:textColor="@color/default_text_colour"
        android:textSize="50sp"
        app:reflectionColor="@color/white" />

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/civ"
        android:layout_width="96dp"
        android:layout_height="96dp"
        android:layout_centerInParent="true"
        android:src="@drawable/ic_launcher"
        app:border_color="#FFAA0000"
        app:border_width="2dp" />

</RelativeLayout>


text:
set -euo pipefail

base_dir=$(dirname "$0")
readonly index_import=../../build/index-import
readonly absolute_unit=../../build/absolute-unit

clang() {
    xcrun --sdk macosx clang -mmacosx-version-min=10.0.0 "$@"
}

############################################################

echo "Testing import only"
pushd "$base_dir"/import_only >/dev/null

# Clean any test state from previous runs.
rm -fr input output

# Produce the index.
clang -fsyntax-only -index-store-path input input.c "-ffile-prefix-map=$PWD=."

"$index_import" input output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/* \
  | FileCheck "-DPWD=$PWD" expected.txt

# Check that the expected index files exist.
ls output/v5/units/input.c.o-* >/dev/null
ls output/v5/records/2F/input.c-50XRP2AC092F >/dev/null

# Check that the record files are identical.
diff -q -r {input,output}/v5/records/

echo "import only tests passed"
popd >/dev/null

############################################################

echo "Testing clang indexes"
pushd "$base_dir"/clang >/dev/null

# Clean any test state from previous runs.
rm -fr input output

# Produce the index.
clang -fsyntax-only -index-store-path input input.c

"$index_import" \
  -remap "$PWD/input.c.o"="/fake/working/dir/output.c.o" \
  -remap "$PWD=/fake/working/dir" \
  input output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/* \
  | FileCheck expected.txt

# Check that the expected index files exist.
ls output/v5/units/output.c.o-1I92L511L7IRP >/dev/null
ls output/v5/records/2F/input.c-50XRP2AC092F >/dev/null

# Check that the record files are identical.
diff -q -r {input,output}/v5/records/

echo "clang index tests passed"
popd >/dev/null

############################################################

echo "Testing clang indexes with remapping"
pushd "$base_dir"/clang >/dev/null

# Clean any test state from previous runs.
rm -fr input output

# Produce the index.
clang -fsyntax-only -index-store-path input input.c "-ffile-prefix-map=$PWD=."

"$index_import" \
  -remap '\./input.c.o=output.c.o' \
  -remap '^\.=/fake/working/dir' \
  input output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/* \
  | FileCheck expected.txt

# Check that the expected index files exist.
ls output/v5/units/output.c.o-1I92L511L7IRP >/dev/null
ls output/v5/records/2F/input.c-50XRP2AC092F >/dev/null

# Check that the record files are identical.
diff -q -r {input,output}/v5/records/

echo "clang index tests with remapping passed"
popd >/dev/null

############################################################

echo "Testing clang indexes with explicit unit output path"
pushd "$base_dir"/clang >/dev/null

# Clean any test state from previous runs.
rm -fr input output

# Produce the index.
clang -fsyntax-only -index-store-path input input.c -index-unit-output-path /foo/input.c.o

"$index_import" \
  -remap '/foo/input.c.o=/fake/working/dir/output.c.o' \
  -remap "$PWD=/fake/working/dir" \
  input output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/* \
  | FileCheck expected.txt

# Check that the expected index files exist.
ls output/v5/units/output.c.o-1I92L511L7IRP >/dev/null
ls output/v5/records/2F/input.c-50XRP2AC092F >/dev/null

# Check that the record files are identical.
diff -q -r {input,output}/v5/records/

echo "clang index tests with explicit unit output path passed"
popd >/dev/null

############################################################

echo "Testing swiftc indexes"
pushd "$base_dir"/swiftc >/dev/null

# Clean any test state from previous runs.
rm -fr input output

# Produce the index and delete the unneeded .o.
xcrun swiftc -target "$(uname -m)-apple-macosx10.9.0" -index-store-path input -c input.swift -file-prefix-map "$PWD=." && rm input.o

"$index_import" \
  -remap '\./input.o=output.o' \
  -remap "^\.=/fake/working/dir" \
  input output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/output* output/v5/units/*.swiftinterface* \
  | FileCheck expected.txt

# Check that the expected index files exist.
ls output/v5/units/output.o-2WR4IG6X35AJB >/dev/null
ls output/v5/records/7Q/input.swift-17Z5ZBKNZQ27Q >/dev/null

# Check that the record files are identical.
diff -q -r {input,output}/v5/records/

echo "swiftc index tests passed"
popd >/dev/null

############################################################

echo "Testing swiftc indexes explicit unit output path"
pushd "$base_dir"/swiftc >/dev/null

# Clean any test state from previous runs.
rm -fr input output

# Produce the index and delete the unneeded .o.
xcrun swiftc -target "$(uname -m)-apple-macosx10.9.0" -index-store-path input -c input.swift -index-unit-output-path /foo/someoutput.o && rm input.o

"$index_import" \
  -remap '/foo/someoutput.o=output.o' \
  -remap "$PWD=/fake/working/dir" \
  input output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/output* output/v5/units/*.swiftinterface* \
  | FileCheck expected.txt

# Check that the expected index files exist.
ls output/v5/units/output.o-2WR4IG6X35AJB >/dev/null
ls output/v5/records/7Q/input.swift-17Z5ZBKNZQ27Q >/dev/null

# Check that the record files are identical.
diff -q -r {input,output}/v5/records/

echo "swiftc index tests explicit unit output path passed"
popd >/dev/null

############################################################

echo "Testing multiple indexes"
pushd "$base_dir"/multiple >/dev/null

# Clean any test state from previous runs.
rm -fr input1 input2 output

# Produce the two indexes.
clang -fsyntax-only -index-store-path input1 input1.c "-ffile-prefix-map=$PWD=."
clang -fsyntax-only -index-store-path input2 input2.c "-ffile-prefix-map=$PWD=."

"$index_import" \
  -parallel-stride 1 \
  -remap '^\./input(.).c.o=output$1.c.o' \
  -remap '^\.=/fake/working/dir' \
  input1 input2 output

# See https://llvm.org/docs/CommandGuide/FileCheck.html
"$absolute_unit" \
  output/v5/units/* \
  | FileCheck expected.txt

# Check that the expected index files exist.
ls output/v5/units/output1.c.o-ZW8ISK3OCQ8L >/dev/null
ls output/v5/units/output2.c.o-1ZBCL54RNWOPC >/dev/null
ls output/v5/records/WU/input1.c-H8E66JWPU5WU >/dev/null
ls output/v5/records/LF/input2.c-1UNY7PC9RPELF >/dev/null

# Check that the record files are identical.
for record in {input1,input2}/v5/records/*; do
    diff -q -r "$record" output/v5/records/"$(basename "$record")"
done

echo "Multiple indexes tests passed"
popd >/dev/null


text:
package com.sebastian_daschner.jaxrs_analyzer.model.instructions;

import org.objectweb.asm.Label;

/**
 * Represents a throw instruction.
 *
 * @author Sebastian Daschner
 */
public class ThrowInstruction extends Instruction {

    public ThrowInstruction(final Label label) {
        super(label);
    }

    @Override
    public InstructionType getType() {
        return InstructionType.THROW;
    }

    @Override
    public int getStackSizeDifference() {
        return -1;
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) return true;
        return o != null && getClass() == o.getClass();
    }

    @Override
    public int hashCode() {
        return 0;
    }

    @Override
    public String toString() {
        return "ThrowInstruction{}";
    }

}


text:
package org.example.prototype.example;

import io.ebean.ExpressionList;
import org.example.BaseTestCase;
import org.example.domain.Contact;
import org.example.domain.Country;
import org.example.domain.Order;
//import org.example.domain.query.QContact;
//import org.example.domain.query.QCustomer;
//import org.example.domain.query.QOrder;
import org.example.domain.query.QCustomer;
import org.junit.Test;

import java.util.List;

/**
 */
public class ExampleQuery extends BaseTestCase {

  @Test
  public void test() {

    QCustomer qc = new QCustomer();

    Country nz = Country.find.ref("NZ");
//
//
//    ExpressionList<Contact> filter = new QContact()
//        .email.like("some@foo%")
//        .getExpressionList();
//
//
//    Customer.find
//        .where()
//        .billingAddress.country.equalTo(nz)
//        //.id.greaterThan(12)
//        //.name.ilike("rob")
//        .order()
//        .id.asc()
//        .contacts.filterMany(filter)
//        //.select("name")
//        //.fetch("contacts", "email")
//          //.query().filterMany("contacts").like("email","rob%@foo.com")
//        //.contacts.filterMany(where)
//        .findList();

//    Customer rob = new QCustomer()
//        .select("id, name")
//        .id.greaterThan(42)
//        .status.equalTo(Customer.Status.GOOD)
//        .name.ilike("Asd")
//        .name.isNull()
//        .billingAddress.country.code.equalTo("NZ")
//        .contacts.email.endsWith("@foo.com")
//        .findUnique();

  }

  @Test
  public void testOrder() {
//
//    QOrder ord = QOrder.alias();
//    QCustomer cus = QCustomer.alias();
//
//    List<Order> orders = new QOrder()
//        .select(ord.orderDate, ord.status)
//        .customer.fetch(cus.name)
//
//        .customer.name.ilike("rob")
//        .orderBy()
//        .customer.name.asc()
//        .orderDate.asc()
//        .findList();

//        .shippingAddress.city.ieq("auckla")
//        .shippingAddress.country.code.eq("NZ")
//        .status.equalTo(Order.Status.APPROVED)
//        .orderDate.after(Date.valueOf("2015-01-20"))
//        .findList();
  }

}


text:
"""
test_gluon
----------------------------------

Tests for `gluon` module.
"""
from gluon.tests.api.network import base

class TestBackends(base.NetworkServiceAPITestCase):

    def test_register(self):
        self.initialize_client('Test', 'http://dummyUrl/')
        self.assertTrue(self.gluonNetworkServiceClient._registered)


text:
<?php
//You're gonna need to query
include load_header('sqlHeader.php');
//2. You just submitted a post, this file will "recieve" it
include root('/bulletin/recieveMessage.php');

//3 .Always display bulletin and submit option if logged in
$result = mysqli_query($Dbcon,"SELECT * FROM messages");

//Find out what page we are on, this will be used to display messages later
$page = 1;
if(isset($_GET['page'])){
	$page = $_GET['page'];
}

//I don't know yet how to find how many matches there are for fetch_array
//So Ill loop through it once and count it
$total_messages=0;
while($row = mysqli_fetch_array($result)){
	$total_messages++;
}

//Now Ill see how many pages we need.  Dividing by 10 and flooring will see how many times we
//have a full 10 messages, and we will set aside that many pages
$total_page_links = floor($total_messages/10.0);
//then, if there are any leftover messages, found out with %, we will add another page for them
if($total_messages%10){
	$total_page_links++;
}
//sets the data pointer on mysqli_fetch_array back to 0, ie back to the first match
mysqli_data_seek($result,0);

//LOOPS and displays all messages, taking into consideration your page
$current_message = 0;
while($row = mysqli_fetch_array($result)){
	$current_message++;
	//Every page displays 10 messages. If we are between last pages last, and 10 from this page,
	//then display
	if($current_message > ($page-1)*10  && $current_message <= ($page)*10){
		echo ''. $row['author_name'] . ': '. $row['message'];
		echo '
';
	}
}
//Displays a link to view other pages
$current_page = 1;
while($total_page_links){
	echo '' . $current_page . '  ';
	$total_page_links --;
	$current_page++;
}
//form to submit message
echo '
	<form action="index.php" method="post">
	Message:<input type="text" name="message">
	<input type=submit>
	</form>
';
?>