Projects STRLCPY bearer Commits ecea46f7
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    cmd/compilerules/main.go
     1 +package main
     2 + 
     3 +import (
     4 + "fmt"
     5 + "log"
     6 + "os"
     7 + 
     8 + "github.com/bearer/bearer/pkg/ast/languages/ruby"
     9 + "github.com/bearer/bearer/pkg/commands/process/settings"
     10 + "github.com/bearer/bearer/pkg/flag"
     11 + "github.com/bearer/bearer/pkg/util/souffle/compiler"
     12 + filewriter "github.com/bearer/bearer/pkg/util/souffle/writer/file"
     13 + "golang.org/x/exp/slices"
     14 +)
     15 + 
     16 +func main() {
     17 + if err := do(); err != nil {
     18 + log.Fatal(err)
     19 + }
     20 +}
     21 + 
     22 +func do() error {
     23 + language := ruby.New()
     24 + defer language.Close()
     25 + 
     26 + ruleFile, err := os.Create("souffle/generated/rules.dl")
     27 + if err != nil {
     28 + return fmt.Errorf("error creating souffle rules file: %w", err)
     29 + }
     30 + defer ruleFile.Close()
     31 + 
     32 + config, err := settings.FromOptions(flag.Options{})
     33 + if err != nil {
     34 + return fmt.Errorf("error loading rules: %w", err)
     35 + }
     36 + 
     37 + writer := filewriter.New(ruleFile)
     38 + 
     39 + for ruleName, rule := range config.BuiltInRules {
     40 + if err := compileRuleToSouffle(language, writer, ruleName, rule); err != nil {
     41 + return fmt.Errorf("built-in rule %s error: %w", ruleName, err)
     42 + }
     43 + }
     44 + 
     45 + for ruleName, rule := range config.Rules {
     46 + if err := compileRuleToSouffle(language, writer, ruleName, rule); err != nil {
     47 + return fmt.Errorf("rule %s error: %w", ruleName, err)
     48 + }
     49 + }
     50 + 
     51 + ruleFile.Close()
     52 + return compiler.Compile("souffle/rules.dl", "pkg/souffle/rules/generated.cpp")
     53 +}
     54 + 
     55 +func compileRuleToSouffle(
     56 + language *ruby.Language,
     57 + writer *filewriter.Writer,
     58 + ruleName string,
     59 + rule *settings.Rule,
     60 +) error {
     61 + if !slices.Contains(rule.Languages, "ruby") {
     62 + return nil
     63 + }
     64 + 
     65 + for _, pattern := range rule.Patterns {
     66 + if err := language.WriteRule(ruleName, pattern.Pattern, writer); err != nil {
     67 + return fmt.Errorf("pattern error (%s)': %w", pattern.Pattern, err)
     68 + }
     69 + }
     70 + 
     71 + return nil
     72 +}
     73 + 
  • ■ ■ ■ ■ ■ ■
    new/language/implementation/implementation.go
    skipped 4 lines
    5 5   
    6 6   patternquerytypes "github.com/bearer/bearer/new/language/patternquery/types"
    7 7   "github.com/bearer/bearer/new/language/tree"
    8  - astlanguage "github.com/bearer/bearer/pkg/ast/languages/ruby"
    9 8  )
    10 9   
    11 10  type Implementation interface {
    12  - ASTLanguage() *astlanguage.Language
    13 11   SitterLanguage() *sitter.Language
    14 12   // AnalyzeFlow unifies nodes that represent the same value in the tree.
    15 13   //
    skipped 126 lines
  • ■ ■ ■ ■ ■
    new/language/implementation/ruby/ruby.go
    skipped 12 lines
    13 13   "github.com/bearer/bearer/new/language/implementation"
    14 14   patternquerytypes "github.com/bearer/bearer/new/language/patternquery/types"
    15 15   "github.com/bearer/bearer/new/language/tree"
    16  - astlanguage "github.com/bearer/bearer/pkg/ast/languages/ruby"
    17 16   "github.com/bearer/bearer/pkg/util/regex"
    18 17  )
    19 18   
    skipped 13 lines
    33 32   ellipsisRegex = regexp.MustCompile(`\$<\.\.\.>`)
    34 33  )
    35 34   
    36  -type rubyImplementation struct {
    37  - astLanguage *astlanguage.Language
    38  -}
     35 +type rubyImplementation struct{}
    39 36   
    40 37  func Get() implementation.Implementation {
    41  - astLanguage := astlanguage.New()
    42  - return &rubyImplementation{astLanguage: astLanguage}
    43  -}
    44  - 
    45  -func (implementation *rubyImplementation) ASTLanguage() *astlanguage.Language {
    46  - return implementation.astLanguage
     38 + return &rubyImplementation{}
    47 39  }
    48 40   
    49 41  func (*rubyImplementation) SitterLanguage() *sitter.Language {
    skipped 219 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/languages/ruby/ruby.go
    skipped 4 lines
    5 5   "fmt"
    6 6   
    7 7   sitter "github.com/smacker/go-tree-sitter"
    8  - "github.com/smacker/go-tree-sitter/ruby"
     8 + sitterruby "github.com/smacker/go-tree-sitter/ruby"
    9 9   
     10 + "github.com/bearer/bearer/new/language/implementation"
     11 + "github.com/bearer/bearer/new/language/implementation/ruby"
     12 + builderinput "github.com/bearer/bearer/new/language/patternquery/builder/input"
    10 13   "github.com/bearer/bearer/pkg/ast/languages/ruby/patterns"
    11 14   "github.com/bearer/bearer/pkg/ast/sourcefacts"
    12 15   "github.com/bearer/bearer/pkg/ast/walker"
    13  - "github.com/bearer/bearer/pkg/souffle/writer"
    14  - filewriter "github.com/bearer/bearer/pkg/souffle/writer/file"
     16 + "github.com/bearer/bearer/pkg/util/souffle/writer"
     17 + filewriter "github.com/bearer/bearer/pkg/util/souffle/writer/file"
    15 18  )
    16 19   
    17 20  type Language struct {
    18  - sitterLanguage *sitter.Language
    19  - walker *walker.Walker
     21 + sitterLanguage *sitter.Language
     22 + langImplementation implementation.Implementation
     23 + walker *walker.Walker
    20 24  }
    21 25   
    22 26  func New() *Language {
    23  - sitterLanguage := ruby.GetLanguage()
     27 + sitterLanguage := sitterruby.GetLanguage()
    24 28   
    25 29   return &Language{
    26  - sitterLanguage: sitterLanguage,
    27  - walker: walker.NewWalker(sitterLanguage),
     30 + sitterLanguage: sitterLanguage,
     31 + langImplementation: ruby.Get(),
     32 + walker: walker.NewWalker(sitterLanguage),
    28 33   }
    29 34  }
    30 35   
    skipped 25 lines
    56 61   input string,
    57 62   writer *filewriter.Writer,
    58 63  ) error {
    59  - inputBytes := []byte(input)
     64 + processedInput, inputParams, err := builderinput.Process(language.langImplementation, input)
     65 + if err != nil {
     66 + return fmt.Errorf("error parsing bearer syntax: %w", err)
     67 + }
    60 68   
    61  - rootNode, err := sitter.ParseCtx(context.TODO(), inputBytes, language.sitterLanguage)
     69 + processedInputBytes := []byte(processedInput)
     70 + 
     71 + rootNode, err := sitter.ParseCtx(context.TODO(), processedInputBytes, language.sitterLanguage)
    62 72   if err != nil {
    63 73   return fmt.Errorf("parse error: %w", err)
    64 74   }
    65 75   
    66 76   if err := patterns.CompileRule(
    67 77   language.walker,
     78 + inputParams,
    68 79   ruleName,
    69  - inputBytes,
     80 + processedInputBytes,
    70 81   rootNode,
    71 82   writer,
    72 83   ); err != nil {
    skipped 10 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/sourcefacts/sourcefacts.go
    skipped 5 lines
    6 6   "github.com/bearer/bearer/pkg/ast/idgenerator"
    7 7   "github.com/bearer/bearer/pkg/ast/languages/ruby/common"
    8 8   "github.com/bearer/bearer/pkg/ast/walker"
    9  - writer "github.com/bearer/bearer/pkg/souffle/writer"
    10  - writerbase "github.com/bearer/bearer/pkg/souffle/writer/base"
     9 + writer "github.com/bearer/bearer/pkg/util/souffle/writer"
     10 + writerbase "github.com/bearer/bearer/pkg/util/souffle/writer/base"
    11 11  )
    12 12   
    13 13  type astWriter struct {
    skipped 116 lines
  • ■ ■ ■ ■ ■
    pkg/souffle/query/query.go
    skipped 1 lines
    2 2   
    3 3  import (
    4 4   "github.com/bearer/bearer/new/language/implementation"
    5  - builderinput "github.com/bearer/bearer/new/language/patternquery/builder/input"
    6  - "github.com/bearer/bearer/pkg/ast/languages/ruby/patterns"
    7 5  )
    8 6   
    9 7  type Query struct {
     8 + ruleName string
    10 9  }
    11 10   
    12 11  func Compile(langImplementation implementation.Implementation, ruleName, input string) (*Query, error) {
    13  - processedInput, inputParams, err := builderinput.Process(langImplementation, input)
    14  - if err != nil {
    15  - return nil, err
    16  - }
    17  - 
    18  - if err := patterns.CompileRule(walker, inputParams, ruleName, []byte(processedInput), rootNode, writer); err != nil {
    19  - return nil, err
    20  - }
    21  - 
    22  - return &Query{}, nil
     12 + return &Query{ruleName: ruleName}, nil
    23 13  }
    24 14   
  • ■ ■ ■ ■ ■ ■
    pkg/souffle/rules/generated.cpp
    skipped 1009 lines
    1010 1010  }
    1011 1011   
    1012 1012  void Stratum_Rule_0e6b7aa9ece342e5::run([[maybe_unused]] const std::vector<RamDomain>& args,[[maybe_unused]] std::vector<RamDomain>& ret){
    1013  -signalHandler->setMsg(R"_(Rule("test_rule",node1) :-
     1013 +signalHandler->setMsg(R"_(Rule("sql_lang_create_table",node1) :-
    1014 1014   AST_NodeType(node1,"call"),
     1015 + !AST_NodeField(node1,_,"receiver"),
    1015 1016   !AST_NodeField(node1,_,"block"),
    1016  - AST_NodeField(node1,node2,"receiver"),
     1017 + AST_NodeField(node1,node2,"method"),
    1017 1018   AST_NodeType(node2,"constant"),
    1018  - AST_NodeContent(node2,"Foo"),
    1019  - AST_NodeField(node1,node3,"method"),
    1020  - AST_NodeType(node3,"identifier"),
    1021  - AST_NodeContent(node3,"new"),
    1022  - AST_NodeField(node1,node4,"arguments"),
    1023  - AST_NodeType(node4,"argument_list"),
    1024  - AST_ParentChild(node4,0,node5),
    1025  - AST_NodeType(node5,"pair"),
    1026  - AST_NodeField(node5,tmp0,"key"),
    1027  - AST_NodeType(tmp0,"simple_symbol"),
    1028  - AST_NodeContent(tmp0,":b"),
    1029  - AST_NodeField(node5,node6,"value"),
    1030  - AST_NodeType(node6,"integer"),
    1031  - AST_NodeContent(node6,"1").
    1032  -in file rules.dl [1:1-1:714])_");
    1033  -if(!(rel_AST_NodeType_b38285ae9991409e->empty()) && !(rel_AST_NodeField_ca02670731ce3c99->empty()) && !(rel_AST_NodeContent_b2f3666572e60754->empty()) && !(rel_AST_ParentChild_be6259205eb66578->empty())) {
     1019 + AST_NodeContent(node2,"CREATE"),
     1020 + AST_NodeField(node1,node3,"arguments"),
     1021 + AST_NodeType(node3,"argument_list"),
     1022 + AST_ParentChild(node3,0,node4),
     1023 + AST_NodeType(node4,"call"),
     1024 + !AST_NodeField(node4,_,"receiver"),
     1025 + !AST_NodeField(node4,_,"block"),
     1026 + AST_NodeField(node4,node5,"method"),
     1027 + AST_NodeType(node5,"constant"),
     1028 + AST_NodeContent(node5,"TABLE"),
     1029 + AST_NodeField(node4,node6,"arguments"),
     1030 + AST_NodeType(node6,"argument_list"),
     1031 + AST_ParentChild(node6,0,node7),
     1032 + AST_NodeType(node7,"call"),
     1033 + !AST_NodeField(node7,_,"block"),
     1034 + AST_NodeField(node7,node8,"receiver"),
     1035 + AST_NodeType(node8,"identifier"),
     1036 + AST_NodeContent(node8,"public"),
     1037 + AST_ParentChild(node7,0,node9),
     1038 + AST_NodeType(node9,"."),
     1039 + AST_ParentChild(node9,0,node10),
     1040 + AST_NodeType(node10,"identifier"),
     1041 + AST_NodeContent(node10,""),
     1042 + AST_NodeField(node7,node11,"arguments"),
     1043 + AST_NodeType(node11,"argument_list"),
     1044 + AST_ParentChild(node11,0,node12),
     1045 + AST_NodeType(node12,"call"),
     1046 + !AST_NodeField(node12,_,"receiver"),
     1047 + !AST_NodeField(node12,_,"block"),
     1048 + AST_NodeField(node12,node13,"method"),
     1049 + AST_NodeType(node13,"global_variable"),
     1050 + AST_NodeField(node12,node14,"arguments"),
     1051 + AST_NodeType(node14,"argument_list"),
     1052 + AST_ParentChild(node14,0,node15),
     1053 + AST_NodeType(node15,"parenthesized_statements"),
     1054 + AST_ParentChild(node15,0,node16),
     1055 + AST_NodeType(node16,"("),
     1056 + AST_ParentChild(node15,1,node17),
     1057 + AST_NodeType(node17,"ERROR"),
     1058 + AST_ParentChild(node17,0,node18),
     1059 + AST_NodeType(node18,"<"),
     1060 + AST_ParentChild(node15,2,node19),
     1061 + AST_NodeType(node19,"global_variable"),
     1062 + AST_ParentChild(node15,3,node20),
     1063 + AST_NodeType(node20,"ERROR"),
     1064 + AST_ParentChild(node20,0,node21),
     1065 + AST_NodeType(node21,">"),
     1066 + AST_ParentChild(node15,4,node22),
     1067 + AST_NodeType(node22,")").
     1068 +in file rules.dl [1:1-1:1954])_");
     1069 +if(!(rel_AST_ParentChild_be6259205eb66578->empty()) && !(rel_AST_NodeField_ca02670731ce3c99->empty()) && !(rel_AST_NodeType_b38285ae9991409e->empty()) && !(rel_AST_NodeContent_b2f3666572e60754->empty())) {
    1034 1070  [&](){
    1035 1071  CREATE_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt,rel_AST_NodeContent_b2f3666572e60754->createContext());
    1036 1072  CREATE_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt,rel_AST_NodeField_ca02670731ce3c99->createContext());
    skipped 2 lines
    1039 1075  CREATE_OP_CONTEXT(rel_Rule_159a590c7b2c8d95_op_ctxt,rel_Rule_159a590c7b2c8d95->createContext());
    1040 1076  auto range = rel_AST_NodeType_b38285ae9991409e->lowerUpperRange_01(Tuple<RamDomain,2>{{ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(0))}},Tuple<RamDomain,2>{{ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt));
    1041 1077  for(const auto& env0 : range) {
    1042  -if( !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
    1043  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1078 +if( !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty()) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1079 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(3))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1044 1080  for(const auto& env1 : range) {
    1045  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(4))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1046  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(5))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(5))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1081 +if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(4))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(5))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1082 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1047 1083  for(const auto& env2 : range) {
    1048  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env2[1]),ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env2[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1049  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(8))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(8))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1084 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env2[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1085 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env2[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env2[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
    1050 1086  for(const auto& env3 : range) {
    1051  -if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env3[1]),ramBitCast(RamSigned(9))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1052  -auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env3[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env3[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1087 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env3[2]),ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt)) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty()) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1088 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(3))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1053 1089  for(const auto& env4 : range) {
    1054  -if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env4[2]),ramBitCast(RamSigned(10))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1055  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(11))}},Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(11))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1090 +if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env4[1]),ramBitCast(RamSigned(8))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env4[1]),ramBitCast(RamSigned(5))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1091 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1056 1092  for(const auto& env5 : range) {
    1057  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env5[1]),ramBitCast(RamSigned(12))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env5[1]),ramBitCast(RamSigned(13))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1058  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(14))}},Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(14))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1093 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env5[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1094 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env5[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env5[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
    1059 1095  for(const auto& env6 : range) {
    1060  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env6[1]),ramBitCast(RamSigned(15))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env6[1]),ramBitCast(RamSigned(16))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1061  -Tuple<RamDomain,2> tuple{{ramBitCast(RamSigned(17)),ramBitCast(env0[0])}};
     1096 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env6[2]),ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt)) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1097 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1098 +for(const auto& env7 : range) {
     1099 +if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env7[1]),ramBitCast(RamSigned(9))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env7[1]),ramBitCast(RamSigned(10))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1100 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1101 +for(const auto& env8 : range) {
     1102 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env8[2]),ramBitCast(RamSigned(11))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1103 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env8[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env8[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1104 +for(const auto& env9 : range) {
     1105 +if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env9[2]),ramBitCast(RamSigned(12))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env9[2]),ramBitCast(RamSigned(10))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1106 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1107 +for(const auto& env10 : range) {
     1108 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env10[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1109 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env10[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env10[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1110 +for(const auto& env11 : range) {
     1111 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env11[2]),ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt)) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty()) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1112 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(3))}},Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1113 +for(const auto& env12 : range) {
     1114 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env12[1]),ramBitCast(RamSigned(13))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1115 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1116 +for(const auto& env13 : range) {
     1117 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env13[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1118 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env13[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env13[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1119 +for(const auto& env14 : range) {
     1120 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env14[2]),ramBitCast(RamSigned(14))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1121 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1122 +for(const auto& env15 : range) {
     1123 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env15[2]),ramBitCast(RamSigned(15))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1124 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(1)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(1)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1125 +for(const auto& env16 : range) {
     1126 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env16[2]),ramBitCast(RamSigned(16))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1127 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env16[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env16[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1128 +for(const auto& env17 : range) {
     1129 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env17[2]),ramBitCast(RamSigned(17))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1130 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(2)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(2)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1131 +for(const auto& env18 : range) {
     1132 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env18[2]),ramBitCast(RamSigned(13))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1133 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(3)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(3)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1134 +for(const auto& env19 : range) {
     1135 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env19[2]),ramBitCast(RamSigned(16))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1136 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env19[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env19[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1137 +for(const auto& env20 : range) {
     1138 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env20[2]),ramBitCast(RamSigned(18))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1139 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(4)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(4)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1140 +for(const auto& env21 : range) {
     1141 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env21[2]),ramBitCast(RamSigned(19))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1142 +Tuple<RamDomain,2> tuple{{ramBitCast(RamSigned(20)),ramBitCast(env0[0])}};
    1062 1143  rel_Rule_159a590c7b2c8d95->insert(tuple,READ_OP_CONTEXT(rel_Rule_159a590c7b2c8d95_op_ctxt));
     1144 +break;
     1145 +}
     1146 +}
     1147 +break;
     1148 +}
     1149 +}
     1150 +}
     1151 +}
     1152 +break;
     1153 +}
     1154 +}
     1155 +break;
     1156 +}
     1157 +}
     1158 +}
     1159 +}
     1160 +break;
     1161 +}
     1162 +}
     1163 +}
     1164 +}
     1165 +}
     1166 +}
     1167 +break;
     1168 +}
     1169 +}
     1170 +}
     1171 +}
    1063 1172  }
    1064 1173  }
    1065 1174  }
    skipped 9 lines
    1075 1184  }
    1076 1185  }
    1077 1186  }
     1187 +}
     1188 +}
     1189 +}
     1190 +}
     1191 +}
     1192 +}
     1193 +}
     1194 +}
    1078 1195  ();}
    1079  -signalHandler->setMsg(R"_(Rule("test_rule",node1) :-
     1196 +signalHandler->setMsg(R"_(Rule("sql_lang_create_table",node1) :-
    1080 1197   AST_NodeType(node1,"call"),
     1198 + !AST_NodeField(node1,_,"receiver"),
    1081 1199   !AST_NodeField(node1,_,"block"),
    1082  - AST_NodeField(node1,node2,"receiver"),
     1200 + AST_NodeField(node1,node2,"method"),
    1083 1201   AST_NodeType(node2,"constant"),
    1084  - AST_NodeContent(node2,"Foo"),
    1085  - AST_NodeField(node1,node3,"method"),
    1086  - AST_NodeType(node3,"identifier"),
    1087  - AST_NodeContent(node3,"new"),
    1088  - AST_NodeField(node1,node4,"arguments"),
    1089  - AST_NodeType(node4,"argument_list"),
    1090  - AST_ParentChild(node4,0,node5),
    1091  - AST_NodeType(node5,"pair"),
    1092  - AST_NodeField(node5,tmp0,"key"),
    1093  - AST_NodeType(tmp0,"hash_key_symbol"),
    1094  - AST_NodeContent(tmp0,"b"),
    1095  - AST_NodeField(node5,node6,"value"),
    1096  - AST_NodeType(node6,"integer"),
    1097  - AST_NodeContent(node6,"1").
    1098  -in file rules.dl [1:1-1:714])_");
    1099  -if(!(rel_AST_NodeType_b38285ae9991409e->empty()) && !(rel_AST_NodeField_ca02670731ce3c99->empty()) && !(rel_AST_NodeContent_b2f3666572e60754->empty()) && !(rel_AST_ParentChild_be6259205eb66578->empty())) {
     1202 + AST_NodeContent(node2,"CREATE"),
     1203 + AST_NodeField(node1,node3,"arguments"),
     1204 + AST_NodeType(node3,"argument_list"),
     1205 + AST_ParentChild(node3,0,node4),
     1206 + AST_NodeType(node4,"call"),
     1207 + !AST_NodeField(node4,_,"receiver"),
     1208 + !AST_NodeField(node4,_,"block"),
     1209 + AST_NodeField(node4,node5,"method"),
     1210 + AST_NodeType(node5,"constant"),
     1211 + AST_NodeContent(node5,"TABLE"),
     1212 + AST_NodeField(node4,node6,"arguments"),
     1213 + AST_NodeType(node6,"argument_list"),
     1214 + AST_ParentChild(node6,0,node7),
     1215 + AST_NodeType(node7,"call"),
     1216 + !AST_NodeField(node7,_,"receiver"),
     1217 + !AST_NodeField(node7,_,"block"),
     1218 + AST_NodeField(node7,node8,"method"),
     1219 + AST_NodeType(node8,"global_variable"),
     1220 + AST_NodeField(node7,node9,"arguments"),
     1221 + AST_NodeType(node9,"argument_list"),
     1222 + AST_ParentChild(node9,0,node10),
     1223 + AST_NodeType(node10,"parenthesized_statements"),
     1224 + AST_ParentChild(node10,0,node11),
     1225 + AST_NodeType(node11,"("),
     1226 + AST_ParentChild(node10,1,node12),
     1227 + AST_NodeType(node12,"ERROR"),
     1228 + AST_ParentChild(node12,0,node13),
     1229 + AST_NodeType(node13,"<"),
     1230 + AST_ParentChild(node10,2,node14),
     1231 + AST_NodeType(node14,"global_variable"),
     1232 + AST_ParentChild(node10,3,node15),
     1233 + AST_NodeType(node15,"ERROR"),
     1234 + AST_ParentChild(node15,0,node16),
     1235 + AST_NodeType(node16,">"),
     1236 + AST_ParentChild(node10,4,node17),
     1237 + AST_NodeType(node17,")").
     1238 +in file rules.dl [2:1-2:1492])_");
     1239 +if(!(rel_AST_ParentChild_be6259205eb66578->empty()) && !(rel_AST_NodeField_ca02670731ce3c99->empty()) && !(rel_AST_NodeType_b38285ae9991409e->empty()) && !(rel_AST_NodeContent_b2f3666572e60754->empty())) {
    1100 1240  [&](){
    1101 1241  CREATE_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt,rel_AST_NodeContent_b2f3666572e60754->createContext());
    1102 1242  CREATE_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt,rel_AST_NodeField_ca02670731ce3c99->createContext());
    skipped 2 lines
    1105 1245  CREATE_OP_CONTEXT(rel_Rule_159a590c7b2c8d95_op_ctxt,rel_Rule_159a590c7b2c8d95->createContext());
    1106 1246  auto range = rel_AST_NodeType_b38285ae9991409e->lowerUpperRange_01(Tuple<RamDomain,2>{{ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(0))}},Tuple<RamDomain,2>{{ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt));
    1107 1247  for(const auto& env0 : range) {
    1108  -if( !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
    1109  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1248 +if( !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty()) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1249 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(3))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1110 1250  for(const auto& env1 : range) {
    1111  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(4))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1112  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(5))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(5))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1251 +if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(4))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env1[1]),ramBitCast(RamSigned(5))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1252 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1113 1253  for(const auto& env2 : range) {
    1114  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env2[1]),ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env2[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1115  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(8))}},Tuple<RamDomain,3>{{ramBitCast(env0[0]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(8))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1254 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env2[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1255 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env2[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env2[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
    1116 1256  for(const auto& env3 : range) {
    1117  -if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env3[1]),ramBitCast(RamSigned(9))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1118  -auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env3[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env3[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1257 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env3[2]),ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt)) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty()) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1258 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(3))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1119 1259  for(const auto& env4 : range) {
    1120  -if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env4[2]),ramBitCast(RamSigned(10))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1121  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(11))}},Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(11))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1260 +if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env4[1]),ramBitCast(RamSigned(8))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env4[1]),ramBitCast(RamSigned(5))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1261 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env3[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
    1122 1262  for(const auto& env5 : range) {
    1123  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env5[1]),ramBitCast(RamSigned(18))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env5[1]),ramBitCast(RamSigned(19))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1124  -auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(14))}},Tuple<RamDomain,3>{{ramBitCast(env4[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(14))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1263 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env5[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1264 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env5[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env5[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
    1125 1265  for(const auto& env6 : range) {
    1126  -if( rel_AST_NodeContent_b2f3666572e60754->contains(Tuple<RamDomain,2>{{ramBitCast(env6[1]),ramBitCast(RamSigned(15))}},READ_OP_CONTEXT(rel_AST_NodeContent_b2f3666572e60754_op_ctxt)) && rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env6[1]),ramBitCast(RamSigned(16))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
    1127  -Tuple<RamDomain,2> tuple{{ramBitCast(RamSigned(17)),ramBitCast(env0[0])}};
     1266 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env6[2]),ramBitCast(RamSigned(0))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt)) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(1))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(1))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty()) && !(!rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(2))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(2))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt)).empty())) {
     1267 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(3))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(3))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1268 +for(const auto& env7 : range) {
     1269 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env7[1]),ramBitCast(RamSigned(13))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1270 +auto range = rel_AST_NodeField_ca02670731ce3c99->lowerUpperRange_101(Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MIN_RAM_SIGNED), ramBitCast(RamSigned(6))}},Tuple<RamDomain,3>{{ramBitCast(env6[2]), ramBitCast<RamDomain>(MAX_RAM_SIGNED), ramBitCast(RamSigned(6))}},READ_OP_CONTEXT(rel_AST_NodeField_ca02670731ce3c99_op_ctxt));
     1271 +for(const auto& env8 : range) {
     1272 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env8[1]),ramBitCast(RamSigned(7))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1273 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env8[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env8[1]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1274 +for(const auto& env9 : range) {
     1275 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env9[2]),ramBitCast(RamSigned(14))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1276 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1277 +for(const auto& env10 : range) {
     1278 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env10[2]),ramBitCast(RamSigned(15))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1279 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(1)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(1)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1280 +for(const auto& env11 : range) {
     1281 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env11[2]),ramBitCast(RamSigned(16))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1282 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env11[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1283 +for(const auto& env12 : range) {
     1284 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env12[2]),ramBitCast(RamSigned(17))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1285 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(2)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(2)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1286 +for(const auto& env13 : range) {
     1287 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env13[2]),ramBitCast(RamSigned(13))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1288 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(3)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(3)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1289 +for(const auto& env14 : range) {
     1290 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env14[2]),ramBitCast(RamSigned(16))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1291 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env14[2]), ramBitCast(RamUnsigned(0)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1292 +for(const auto& env15 : range) {
     1293 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env15[2]),ramBitCast(RamSigned(18))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1294 +auto range = rel_AST_ParentChild_be6259205eb66578->lowerUpperRange_110(Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(4)), ramBitCast<RamDomain>(MIN_RAM_SIGNED)}},Tuple<RamDomain,3>{{ramBitCast(env9[2]), ramBitCast(RamUnsigned(4)), ramBitCast<RamDomain>(MAX_RAM_SIGNED)}},READ_OP_CONTEXT(rel_AST_ParentChild_be6259205eb66578_op_ctxt));
     1295 +for(const auto& env16 : range) {
     1296 +if( rel_AST_NodeType_b38285ae9991409e->contains(Tuple<RamDomain,2>{{ramBitCast(env16[2]),ramBitCast(RamSigned(19))}},READ_OP_CONTEXT(rel_AST_NodeType_b38285ae9991409e_op_ctxt))) {
     1297 +Tuple<RamDomain,2> tuple{{ramBitCast(RamSigned(20)),ramBitCast(env0[0])}};
    1128 1298  rel_Rule_159a590c7b2c8d95->insert(tuple,READ_OP_CONTEXT(rel_Rule_159a590c7b2c8d95_op_ctxt));
     1299 +break;
    1129 1300  }
    1130 1301  }
     1302 +break;
    1131 1303  }
    1132 1304  }
    1133 1305  }
     1306 +}
     1307 +break;
     1308 +}
     1309 +}
     1310 +break;
     1311 +}
     1312 +}
     1313 +}
     1314 +}
     1315 +break;
     1316 +}
     1317 +}
     1318 +}
     1319 +}
     1320 +}
     1321 +}
     1322 +break;
    1134 1323  }
    1135 1324  }
    1136 1325  }
    skipped 4 lines
    1141 1330  }
    1142 1331  }
    1143 1332  }
     1333 +}
     1334 +}
     1335 +}
     1336 +}
     1337 +}
     1338 +}
     1339 +}
    1144 1340  ();}
    1145 1341  if (pruneImdtRels) rel_AST_NodeContent_b2f3666572e60754->purge();
    1146 1342  if (pruneImdtRels) rel_AST_NodeField_ca02670731ce3c99->purge();
    skipped 47 lines
    1194 1390  signalHandler->setMsg(R"_(RuleMatch(name,location) :-
    1195 1391   Rule(name,node),
    1196 1392   AST_NodeLocation(node,location).
    1197  -in file ruby.dl [8:1-8:81])_");
     1393 +in file rules.dl [8:1-8:81])_");
    1198 1394  if(!(rel_Rule_159a590c7b2c8d95->empty()) && !(rel_AST_NodeLocation_5f3f38ee7a82c12a->empty())) {
    1199 1395  [&](){
    1200 1396  CREATE_OP_CONTEXT(rel_AST_NodeLocation_5f3f38ee7a82c12a_op_ctxt,rel_AST_NodeLocation_5f3f38ee7a82c12a->createContext());
    skipped 23 lines
    1224 1420   
    1225 1421  namespace souffle {
    1226 1422  using namespace souffle;
    1227  -class Sf_souffle: public SouffleProgram {
     1423 +class Sf_generated: public SouffleProgram {
    1228 1424  public:
    1229  - Sf_souffle();
    1230  - ~Sf_souffle();
     1425 + Sf_generated();
     1426 + ~Sf_generated();
    1231 1427  void run();
    1232 1428  void runAll(std::string inputDirectoryArg = "",std::string outputDirectoryArg = "",bool performIOArg = true,bool pruneImdtRelsArg = true);
    1233 1429  void printAll([[maybe_unused]] std::string outputDirectoryArg = "");
    skipped 39 lines
    1273 1469  } // namespace souffle
    1274 1470  namespace souffle {
    1275 1471  using namespace souffle;
    1276  - Sf_souffle::Sf_souffle():
     1472 + Sf_generated::Sf_generated():
    1277 1473  symTable({
    1278 1474   R"_(call)_",
     1475 + R"_(receiver)_",
    1279 1476   R"_(block)_",
    1280  - R"_(receiver)_",
    1281  - R"_(Foo)_",
     1477 + R"_(method)_",
     1478 + R"_(CREATE)_",
    1282 1479   R"_(constant)_",
    1283  - R"_(method)_",
    1284  - R"_(new)_",
    1285  - R"_(identifier)_",
    1286 1480   R"_(arguments)_",
    1287 1481   R"_(argument_list)_",
    1288  - R"_(pair)_",
    1289  - R"_(key)_",
    1290  - R"_(:b)_",
    1291  - R"_(simple_symbol)_",
    1292  - R"_(value)_",
    1293  - R"_(1)_",
    1294  - R"_(integer)_",
    1295  - R"_(test_rule)_",
    1296  - R"_(b)_",
    1297  - R"_(hash_key_symbol)_",
     1482 + R"_(TABLE)_",
     1483 + R"_(public)_",
     1484 + R"_(identifier)_",
     1485 + R"_(.)_",
     1486 + R"_()_",
     1487 + R"_(global_variable)_",
     1488 + R"_(parenthesized_statements)_",
     1489 + R"_(()_",
     1490 + R"_(ERROR)_",
     1491 + R"_(<)_",
     1492 + R"_(>)_",
     1493 + R"_())_",
     1494 + R"_(sql_lang_create_table)_",
    1298 1495  }),
    1299 1496  recordTable(),
    1300 1497  regexCache(),
    skipped 27 lines
    1328 1525  addRelation("RuleMatch", wrapper_rel_RuleMatch_8974a5cadf2d4779, false, true);
    1329 1526  }
    1330 1527   
    1331  - Sf_souffle::~Sf_souffle(){
     1528 + Sf_generated::~Sf_generated(){
    1332 1529  }
    1333 1530   
    1334  -void Sf_souffle::runFunction(std::string inputDirectoryArg,std::string outputDirectoryArg,bool performIOArg,bool pruneImdtRelsArg){
     1531 +void Sf_generated::runFunction(std::string inputDirectoryArg,std::string outputDirectoryArg,bool performIOArg,bool pruneImdtRelsArg){
    1335 1532   
    1336 1533   this->inputDirectory = std::move(inputDirectoryArg);
    1337 1534   this->outputDirectory = std::move(outputDirectoryArg);
    skipped 41 lines
    1379 1576  signalHandler->reset();
    1380 1577  }
    1381 1578   
    1382  -void Sf_souffle::run(){
     1579 +void Sf_generated::run(){
    1383 1580  runFunction("", "", false, false);
    1384 1581  }
    1385 1582   
    1386  -void Sf_souffle::runAll(std::string inputDirectoryArg,std::string outputDirectoryArg,bool performIOArg,bool pruneImdtRelsArg){
     1583 +void Sf_generated::runAll(std::string inputDirectoryArg,std::string outputDirectoryArg,bool performIOArg,bool pruneImdtRelsArg){
    1387 1584  runFunction(inputDirectoryArg, outputDirectoryArg, performIOArg, pruneImdtRelsArg);
    1388 1585  }
    1389 1586   
    1390  -void Sf_souffle::printAll([[maybe_unused]] std::string outputDirectoryArg){
     1587 +void Sf_generated::printAll([[maybe_unused]] std::string outputDirectoryArg){
    1391 1588  try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","name\tlocation"},{"auxArity","0"},{"name","RuleMatch"},{"operation","output"},{"output-dir","."},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 2, \"params\": [\"name\", \"location\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 2, \"types\": [\"s:RuleName\", \"r:AST_Location\"]}}"}});
    1392 1589  if (!outputDirectoryArg.empty()) {directiveMap["output-dir"] = outputDirectoryArg;}
    1393 1590  IOSystem::getInstance().getWriter(directiveMap, symTable, recordTable)->writeAll(*rel_RuleMatch_8974a5cadf2d4779);
    1394 1591  } catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1395 1592  }
    1396 1593   
    1397  -void Sf_souffle::loadAll([[maybe_unused]] std::string inputDirectoryArg){
     1594 +void Sf_generated::loadAll([[maybe_unused]] std::string inputDirectoryArg){
    1398 1595  try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","node\tcontent"},{"auxArity","0"},{"fact-dir","."},{"name","AST_NodeContent"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 2, \"params\": [\"node\", \"content\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 2, \"types\": [\"r:AST_Node\", \"s:AST_Content\"]}}"}});
    1399 1596  if (!inputDirectoryArg.empty()) {directiveMap["fact-dir"] = inputDirectoryArg;}
    1400 1597  IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_NodeContent_b2f3666572e60754);
    1401 1598  } catch (std::exception& e) {std::cerr << "Error loading AST_NodeContent data: " << e.what() << '\n';
    1402 1599  exit(1);
    1403 1600  }
    1404  -try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","parent\tindex\tchild"},{"auxArity","0"},{"fact-dir","."},{"name","AST_ParentChild"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 3, \"params\": [\"parent\", \"index\", \"child\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 3, \"types\": [\"r:AST_Node\", \"u:unsigned\", \"r:AST_Node\"]}}"}});
    1405  -if (!inputDirectoryArg.empty()) {directiveMap["fact-dir"] = inputDirectoryArg;}
    1406  -IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_ParentChild_be6259205eb66578);
    1407  -} catch (std::exception& e) {std::cerr << "Error loading AST_ParentChild data: " << e.what() << '\n';
    1408  -exit(1);
    1409  -}
    1410  -try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","node\ttype"},{"auxArity","0"},{"fact-dir","."},{"name","AST_NodeType"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 2, \"params\": [\"node\", \"type\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 2, \"types\": [\"r:AST_Node\", \"s:AST_Type\"]}}"}});
     1601 +try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","parent\tchild\tfield"},{"auxArity","0"},{"fact-dir","."},{"name","AST_NodeField"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 3, \"params\": [\"parent\", \"child\", \"field\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 3, \"types\": [\"r:AST_Node\", \"r:AST_Node\", \"s:AST_Field\"]}}"}});
    1411 1602  if (!inputDirectoryArg.empty()) {directiveMap["fact-dir"] = inputDirectoryArg;}
    1412  -IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_NodeType_b38285ae9991409e);
    1413  -} catch (std::exception& e) {std::cerr << "Error loading AST_NodeType data: " << e.what() << '\n';
     1603 +IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_NodeField_ca02670731ce3c99);
     1604 +} catch (std::exception& e) {std::cerr << "Error loading AST_NodeField data: " << e.what() << '\n';
    1414 1605  exit(1);
    1415 1606  }
    1416 1607  try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","node\tlocation"},{"auxArity","0"},{"fact-dir","."},{"name","AST_NodeLocation"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 2, \"params\": [\"node\", \"location\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 2, \"types\": [\"r:AST_Node\", \"r:AST_Location\"]}}"}});
    skipped 2 lines
    1419 1610  } catch (std::exception& e) {std::cerr << "Error loading AST_NodeLocation data: " << e.what() << '\n';
    1420 1611  exit(1);
    1421 1612  }
    1422  -try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","parent\tchild\tfield"},{"auxArity","0"},{"fact-dir","."},{"name","AST_NodeField"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 3, \"params\": [\"parent\", \"child\", \"field\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 3, \"types\": [\"r:AST_Node\", \"r:AST_Node\", \"s:AST_Field\"]}}"}});
     1613 +try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","node\ttype"},{"auxArity","0"},{"fact-dir","."},{"name","AST_NodeType"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 2, \"params\": [\"node\", \"type\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 2, \"types\": [\"r:AST_Node\", \"s:AST_Type\"]}}"}});
    1423 1614  if (!inputDirectoryArg.empty()) {directiveMap["fact-dir"] = inputDirectoryArg;}
    1424  -IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_NodeField_ca02670731ce3c99);
    1425  -} catch (std::exception& e) {std::cerr << "Error loading AST_NodeField data: " << e.what() << '\n';
     1615 +IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_NodeType_b38285ae9991409e);
     1616 +} catch (std::exception& e) {std::cerr << "Error loading AST_NodeType data: " << e.what() << '\n';
     1617 +exit(1);
     1618 +}
     1619 +try {std::map<std::string, std::string> directiveMap({{"IO","file"},{"attributeNames","parent\tindex\tchild"},{"auxArity","0"},{"fact-dir","."},{"name","AST_ParentChild"},{"operation","input"},{"params","{\"records\": {\"AST_Location\": {\"arity\": 5, \"params\": [\"startByte\", \"startLine\", \"startColumn\", \"endLine\", \"endColumn\"]}, \"AST_Node\": {\"arity\": 2, \"params\": [\"file\", \"nodeId\"]}}, \"relation\": {\"arity\": 3, \"params\": [\"parent\", \"index\", \"child\"]}}"},{"types","{\"ADTs\": {}, \"records\": {\"r:AST_Location\": {\"arity\": 5, \"types\": [\"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\", \"i:AST_FilePosition\"]}, \"r:AST_Node\": {\"arity\": 2, \"types\": [\"i:AST_FileId\", \"i:AST_NodeId\"]}}, \"relation\": {\"arity\": 3, \"types\": [\"r:AST_Node\", \"u:unsigned\", \"r:AST_Node\"]}}"}});
     1620 +if (!inputDirectoryArg.empty()) {directiveMap["fact-dir"] = inputDirectoryArg;}
     1621 +IOSystem::getInstance().getReader(directiveMap, symTable, recordTable)->readAll(*rel_AST_ParentChild_be6259205eb66578);
     1622 +} catch (std::exception& e) {std::cerr << "Error loading AST_ParentChild data: " << e.what() << '\n';
    1426 1623  exit(1);
    1427 1624  }
    1428 1625  }
    1429 1626   
    1430  -void Sf_souffle::dumpInputs(){
     1627 +void Sf_generated::dumpInputs(){
    1431 1628  try {std::map<std::string, std::string> rwOperation;
    1432 1629  rwOperation["IO"] = "stdout";
    1433 1630  rwOperation["name"] = "AST_NodeContent";
    skipped 2 lines
    1436 1633  } catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1437 1634  try {std::map<std::string, std::string> rwOperation;
    1438 1635  rwOperation["IO"] = "stdout";
    1439  -rwOperation["name"] = "AST_ParentChild";
    1440  -rwOperation["types"] = "{\"relation\": {\"arity\": 3, \"auxArity\": 0, \"types\": [\"r:AST_Node\", \"u:unsigned\", \"r:AST_Node\"]}}";
    1441  -IOSystem::getInstance().getWriter(rwOperation, symTable, recordTable)->writeAll(*rel_AST_ParentChild_be6259205eb66578);
     1636 +rwOperation["name"] = "AST_NodeField";
     1637 +rwOperation["types"] = "{\"relation\": {\"arity\": 3, \"auxArity\": 0, \"types\": [\"r:AST_Node\", \"r:AST_Node\", \"s:AST_Field\"]}}";
     1638 +IOSystem::getInstance().getWriter(rwOperation, symTable, recordTable)->writeAll(*rel_AST_NodeField_ca02670731ce3c99);
     1639 +} catch (std::exception& e) {std::cerr << e.what();exit(1);}
     1640 +try {std::map<std::string, std::string> rwOperation;
     1641 +rwOperation["IO"] = "stdout";
     1642 +rwOperation["name"] = "AST_NodeLocation";
     1643 +rwOperation["types"] = "{\"relation\": {\"arity\": 2, \"auxArity\": 0, \"types\": [\"r:AST_Node\", \"r:AST_Location\"]}}";
     1644 +IOSystem::getInstance().getWriter(rwOperation, symTable, recordTable)->writeAll(*rel_AST_NodeLocation_5f3f38ee7a82c12a);
    1442 1645  } catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1443 1646  try {std::map<std::string, std::string> rwOperation;
    1444 1647  rwOperation["IO"] = "stdout";
    skipped 3 lines
    1448 1651  } catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1449 1652  try {std::map<std::string, std::string> rwOperation;
    1450 1653  rwOperation["IO"] = "stdout";
    1451  -rwOperation["name"] = "AST_NodeLocation";
    1452  -rwOperation["types"] = "{\"relation\": {\"arity\": 2, \"auxArity\": 0, \"types\": [\"r:AST_Node\", \"r:AST_Location\"]}}";
    1453  -IOSystem::getInstance().getWriter(rwOperation, symTable, recordTable)->writeAll(*rel_AST_NodeLocation_5f3f38ee7a82c12a);
    1454  -} catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1455  -try {std::map<std::string, std::string> rwOperation;
    1456  -rwOperation["IO"] = "stdout";
    1457  -rwOperation["name"] = "AST_NodeField";
    1458  -rwOperation["types"] = "{\"relation\": {\"arity\": 3, \"auxArity\": 0, \"types\": [\"r:AST_Node\", \"r:AST_Node\", \"s:AST_Field\"]}}";
    1459  -IOSystem::getInstance().getWriter(rwOperation, symTable, recordTable)->writeAll(*rel_AST_NodeField_ca02670731ce3c99);
     1654 +rwOperation["name"] = "AST_ParentChild";
     1655 +rwOperation["types"] = "{\"relation\": {\"arity\": 3, \"auxArity\": 0, \"types\": [\"r:AST_Node\", \"u:unsigned\", \"r:AST_Node\"]}}";
     1656 +IOSystem::getInstance().getWriter(rwOperation, symTable, recordTable)->writeAll(*rel_AST_ParentChild_be6259205eb66578);
    1460 1657  } catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1461 1658  }
    1462 1659   
    1463  -void Sf_souffle::dumpOutputs(){
     1660 +void Sf_generated::dumpOutputs(){
    1464 1661  try {std::map<std::string, std::string> rwOperation;
    1465 1662  rwOperation["IO"] = "stdout";
    1466 1663  rwOperation["name"] = "RuleMatch";
    skipped 2 lines
    1469 1666  } catch (std::exception& e) {std::cerr << e.what();exit(1);}
    1470 1667  }
    1471 1668   
    1472  -SymbolTable& Sf_souffle::getSymbolTable(){
     1669 +SymbolTable& Sf_generated::getSymbolTable(){
    1473 1670  return symTable;
    1474 1671  }
    1475 1672   
    1476  -RecordTable& Sf_souffle::getRecordTable(){
     1673 +RecordTable& Sf_generated::getRecordTable(){
    1477 1674  return recordTable;
    1478 1675  }
    1479 1676   
    1480  -void Sf_souffle::setNumThreads(std::size_t numThreadsValue){
     1677 +void Sf_generated::setNumThreads(std::size_t numThreadsValue){
    1481 1678  SouffleProgram::setNumThreads(numThreadsValue);
    1482 1679  symTable.setNumLanes(getNumThreads());
    1483 1680  recordTable.setNumLanes(getNumThreads());
    1484 1681  regexCache.setNumLanes(getNumThreads());
    1485 1682  }
    1486 1683   
    1487  -void Sf_souffle::executeSubroutine(std::string name,const std::vector<RamDomain>& args,std::vector<RamDomain>& ret){
     1684 +void Sf_generated::executeSubroutine(std::string name,const std::vector<RamDomain>& args,std::vector<RamDomain>& ret){
    1488 1685  if (name == "AST_NodeContent") {
    1489 1686  stratum_AST_NodeContent_f29a0e907561c50c.run(args, ret);
    1490 1687  return;}
    skipped 20 lines
    1511 1708   
    1512 1709  } // namespace souffle
    1513 1710  namespace souffle {
    1514  -SouffleProgram *newInstance_souffle(){return new souffle::Sf_souffle;}
    1515  -SymbolTable *getST_souffle(SouffleProgram *p){return &reinterpret_cast<souffle::Sf_souffle*>(p)->getSymbolTable();}
     1711 +SouffleProgram *newInstance_generated(){return new souffle::Sf_generated;}
     1712 +SymbolTable *getST_generated(SouffleProgram *p){return &reinterpret_cast<souffle::Sf_generated*>(p)->getSymbolTable();}
    1516 1713  } // namespace souffle
    1517 1714   
    1518 1715  #ifndef __EMBEDDED_SOUFFLE__
    skipped 1 lines
    1520 1717  int main(int argc, char** argv)
    1521 1718  {
    1522 1719  try{
    1523  -souffle::CmdOptions opt(R"(souffle/ruby.dl)",
     1720 +souffle::CmdOptions opt(R"(souffle/rules.dl)",
    1524 1721  R"()",
    1525 1722  R"()",
    1526 1723  false,
    1527 1724  R"()",
    1528 1725  1);
    1529 1726  if (!opt.parse(argc,argv)) return 1;
    1530  -souffle::Sf_souffle obj;
     1727 +souffle::Sf_generated obj;
    1531 1728  #if defined(_OPENMP)
    1532 1729  obj.setNumThreads(opt.getNumJobs());
    1533 1730   
    skipped 6 lines
    1540 1737   
    1541 1738  namespace souffle {
    1542 1739  using namespace souffle;
    1543  -class factory_Sf_souffle: souffle::ProgramFactory {
     1740 +class factory_Sf_generated: souffle::ProgramFactory {
    1544 1741  public:
    1545 1742  souffle::SouffleProgram* newInstance();
    1546  - factory_Sf_souffle();
     1743 + factory_Sf_generated();
    1547 1744  private:
    1548 1745  };
    1549 1746  } // namespace souffle
    1550 1747  namespace souffle {
    1551 1748  using namespace souffle;
    1552  -souffle::SouffleProgram* factory_Sf_souffle::newInstance(){
    1553  -return new souffle::Sf_souffle();
     1749 +souffle::SouffleProgram* factory_Sf_generated::newInstance(){
     1750 +return new souffle::Sf_generated();
    1554 1751  }
    1555 1752   
    1556  - factory_Sf_souffle::factory_Sf_souffle():
    1557  -souffle::ProgramFactory("souffle"){
     1753 + factory_Sf_generated::factory_Sf_generated():
     1754 +souffle::ProgramFactory("generated"){
    1558 1755  }
    1559 1756   
    1560 1757  } // namespace souffle
    skipped 1 lines
    1562 1759   
    1563 1760  #ifdef __EMBEDDED_SOUFFLE__
    1564 1761  extern "C" {
    1565  -souffle::factory_Sf_souffle __factory_Sf_souffle_instance;
     1762 +souffle::factory_Sf_generated __factory_Sf_generated_instance;
    1566 1763  }
    1567 1764  #endif
    1568 1765  } // namespace souffle
    skipped 2 lines
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/compiler/compiler.go
    1 1  package compiler
    2 2   
    3  -// func Compile(inputFilename, outputFilename string) error {
    4  -// cmd := exec.Command("souffle", "-g", outputFilename, inputFilename)
    5  -// if err := cmd.Run(); err != nil {
    6  -// return fmt.Errorf("souffle compilation error: %w", err)
    7  -// }
     3 +import (
     4 + "fmt"
     5 + "os/exec"
     6 +)
     7 + 
     8 +func Compile(inputFilename, outputFilename string) error {
     9 + cmd := exec.Command("souffle", "-g", outputFilename, inputFilename)
     10 + if err := cmd.Run(); err != nil {
     11 + return fmt.Errorf("souffle compilation error: %w", err)
     12 + }
    8 13   
    9  -// return nil
    10  -// }
     14 + return nil
     15 +}
    11 16   
  • ■ ■ ■ ■
    pkg/util/souffle/writer/writer.go
    1 1  package writer
    2 2   
    3  -import "github.com/bearer/bearer/pkg/souffle/writer/base"
     3 +import "github.com/bearer/bearer/pkg/util/souffle/writer/base"
    4 4   
    5 5  type FactWriter interface {
    6 6   Symbol(value string) base.Symbol
    skipped 5 lines
  • ■ ■ ■ ■ ■ ■
    souffle/generated/rules.dl
     1 +Rule("ruby_lang_ftp_using_user_input_ftp", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     2 +Rule("ruby_lang_ftp_using_user_input_ftp", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "open").
     3 +Rule("ruby_lang_ftp_using_user_input_ftp", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "open"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "block"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "{"), AST_NodeField(node8, node10, "parameters"), AST_NodeType(node10, "block_parameters"), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, "|"), AST_ParentChild(node10, 1, node12), AST_ParentChild(node10, 2, node13), AST_NodeType(node13, "|"), AST_ParentChild(node8, 1, node14), AST_NodeType(node14, "}").
     4 +Rule("ruby_rails_redirect_to", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "redirect_to"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     5 +Rule("ruby_third_parties_segment", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     6 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "SHA1"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "hexidigest"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     7 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "MD5"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "hexdigest"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     8 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     9 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     10 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     11 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     12 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     13 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     14 +Rule("ruby_lang_weak_encryption_with_data", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), !AST_NodeField(node5, _, "parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, "end").
     15 +Rule("ruby_lang_http_url_using_user_input_path_hash", node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "{"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "pair"), AST_NodeField(node3, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, ":"), AST_NodeField(node3, node5, "value"), AST_ParentChild(node1, 2, node6), AST_NodeType(node6, "}").
     16 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     17 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     18 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Net"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "HTTP"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new"), AST_NodeField(node1, node11, "arguments"), AST_NodeType(node11, "argument_list"), AST_ParentChild(node11, 0, node12), AST_NodeType(node12, "("), AST_ParentChild(node11, 1, node13), AST_ParentChild(node11, 2, node14), AST_NodeType(node14, ")").
     19 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     20 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "http"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     21 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     22 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Easy"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     23 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "url"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     24 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Multi"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     25 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Multi"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     26 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     27 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     28 +Rule("ruby_lang_http_insecure", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "post"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     29 +Rule("ruby_rails_render_using_user_input_sanitized", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     30 +Rule("ruby_lang_ssl_verification", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "start"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_NodeType(node10, "pair"), AST_NodeField(node10, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":verify_mode"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "verify_mode")), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, ":"), AST_NodeField(node10, node12, "value"), AST_NodeType(node12, "scope_resolution"), AST_NodeField(node12, node13, "scope"), AST_NodeType(node13, "scope_resolution"), AST_NodeField(node13, node14, "scope"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "OpenSSL"), AST_ParentChild(node13, 0, node15), AST_NodeType(node15, "::"), AST_NodeField(node13, node16, "name"), AST_NodeType(node16, "constant"), AST_NodeContent(node16, "SSL"), AST_ParentChild(node12, 0, node17), AST_NodeType(node17, "::"), AST_NodeField(node12, node18, "name"), AST_NodeType(node18, "constant"), AST_NodeContent(node18, "VERIFY_NONE"), AST_ParentChild(node8, 2, node19), AST_NodeType(node19, ")").
     31 +Rule("ruby_lang_ssl_verification", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "start"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_NodeType(node10, "hash"), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, "{"), AST_ParentChild(node10, 1, node12), AST_NodeType(node12, "pair"), AST_NodeField(node12, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":verify_mode"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "verify_mode")), AST_ParentChild(node12, 0, node13), AST_NodeType(node13, ":"), AST_NodeField(node12, node14, "value"), AST_NodeType(node14, "scope_resolution"), AST_NodeField(node14, node15, "scope"), AST_NodeType(node15, "scope_resolution"), AST_NodeField(node15, node16, "scope"), AST_NodeType(node16, "constant"), AST_NodeContent(node16, "OpenSSL"), AST_ParentChild(node15, 0, node17), AST_NodeType(node17, "::"), AST_NodeField(node15, node18, "name"), AST_NodeType(node18, "constant"), AST_NodeContent(node18, "SSL"), AST_ParentChild(node14, 0, node19), AST_NodeType(node19, "::"), AST_NodeField(node14, node20, "name"), AST_NodeType(node20, "constant"), AST_NodeContent(node20, "VERIFY_NONE"), AST_ParentChild(node10, 2, node21), AST_NodeType(node21, "}"), AST_ParentChild(node8, 2, node22), AST_NodeType(node22, ")").
     32 +Rule("ruby_lang_ssl_verification", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "verify_mode"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right"), AST_NodeType(node7, "scope_resolution"), AST_NodeField(node7, node8, "scope"), AST_NodeType(node8, "scope_resolution"), AST_NodeField(node8, node9, "scope"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "OpenSSL"), AST_ParentChild(node8, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node8, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "SSL"), AST_ParentChild(node7, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node7, node13, "name"), AST_NodeType(node13, "constant"), AST_NodeContent(node13, "VERIFY_NONE").
     33 +Rule("ruby_rails_http_verb_confusion", node1) :- AST_NodeType(node1, "if"), !AST_NodeField(node1, _, "consequence"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "if"), !AST_NodeField(node2, _, "condition"), !AST_NodeField(node2, _, "consequence"), !AST_NodeField(node2, _, "alternative"), AST_NodeField(node1, node3, "condition"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "request"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "."), AST_NodeField(node3, node6, "method"), AST_NodeType(node6, "identifier"), AST_NodeContent(node6, "get?"), AST_NodeField(node1, node7, "alternative"), AST_NodeType(node7, "else"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "else"), AST_ParentChild(node1, 1, node9), AST_NodeType(node9, "end").
     34 +Rule("ruby_rails_http_verb_confusion", node1) :- AST_NodeType(node1, "unless"), !AST_NodeField(node1, _, "consequence"), !AST_NodeField(node1, _, "alternative"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "unless"), !AST_NodeField(node2, _, "condition"), !AST_NodeField(node2, _, "consequence"), !AST_NodeField(node2, _, "alternative"), AST_NodeField(node1, node3, "condition"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "request"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "."), AST_NodeField(node3, node6, "method"), AST_NodeType(node6, "identifier"), AST_NodeContent(node6, "get?"), AST_ParentChild(node1, 1, node7), AST_NodeType(node7, "end").
     35 +Rule("ruby_rails_http_verb_confusion", node1) :- AST_NodeType(node1, "unless_modifier"), AST_NodeField(node1, node2, "body"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "unless"), !AST_NodeField(node3, _, "condition"), !AST_NodeField(node3, _, "consequence"), !AST_NodeField(node3, _, "alternative"), AST_NodeField(node1, node4, "condition"), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "block"), (!AST_NodeField(node4, _, "arguments"); AST_NodeField(node4, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node4, node5, "receiver"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "request"), AST_ParentChild(node4, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node4, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "get?").
     36 +Rule("google_dataflow_templates_service_client_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "scope_resolution"), AST_NodeField(node6, node7, "scope"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Google"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node6, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "Cloud"), AST_ParentChild(node5, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node5, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "Dataflow"), AST_ParentChild(node4, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node4, node13, "name"), AST_ParentChild(node3, 0, node14), AST_NodeType(node14, "::"), AST_NodeField(node3, node15, "name"), AST_NodeType(node15, "constant"), AST_NodeContent(node15, "TemplatesService"), AST_ParentChild(node2, 0, node16), AST_NodeType(node16, "::"), AST_NodeField(node2, node17, "name"), AST_NodeType(node17, "constant"), AST_NodeContent(node17, "Client"), AST_ParentChild(node1, 0, node18), AST_NodeType(node18, "."), AST_NodeField(node1, node19, "method"), AST_NodeType(node19, "identifier"), AST_NodeContent(node19, "new").
     37 +Rule("google_dataflow_templates_service_client_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Cloud"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Dataflow"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "templates_service").
     38 +Rule("ruby_lang_weak_encryption_with_data_openssl_rsa_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "PKey"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "RSA"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new").
     39 +Rule("ruby_rails_insecure_http_password", node1) :- AST_NodeType(node1, "class"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "class"), !AST_NodeField(node2, _, "name"), !AST_NodeField(node2, _, "superclass"), AST_NodeField(node1, node3, "name"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "UsersController"), AST_NodeField(node1, node4, "superclass"), AST_NodeType(node4, "superclass"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "<"), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "ApplicationController"), AST_ParentChild(node1, 1, node7), AST_NodeType(node7, "call"), !AST_NodeField(node7, _, "receiver"), !AST_NodeField(node7, _, "block"), AST_NodeField(node7, node8, "method"), AST_NodeType(node8, "identifier"), AST_NodeContent(node8, "http_basic_authenticate_with"), AST_NodeField(node7, node9, "arguments"), AST_NodeType(node9, "argument_list"), AST_ParentChild(node9, 0, node10), AST_NodeType(node10, "pair"), AST_NodeField(node10, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":password"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "password")), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, ":"), AST_NodeField(node10, node12, "value"), AST_NodeType(node12, "string"), AST_ParentChild(node12, 0, node13), AST_NodeType(node13, "\""), AST_ParentChild(node12, 1, node14), AST_ParentChild(node12, 2, node15), AST_NodeType(node15, "\""), AST_ParentChild(node1, 2, node16), AST_NodeType(node16, "end").
     40 +Rule("ruby_lang_ftp_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     41 +Rule("ruby_lang_ftp_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     42 +Rule("ruby_lang_ftp_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     43 +Rule("ruby_lang_ftp_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     44 +Rule("ruby_lang_exception", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "raise"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     45 +Rule("ruby_lang_http_url_using_user_input_url_hash", node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "{"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "pair"), AST_NodeField(node3, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, ":"), AST_NodeField(node3, node5, "value"), AST_ParentChild(node1, 2, node6), AST_NodeType(node6, "}").
     46 +Rule("ruby_lang_http_url_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     47 +Rule("ruby_lang_http_url_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     48 +Rule("ruby_lang_http_url_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     49 +Rule("ruby_lang_http_url_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     50 +Rule("ruby_rails_permissive_regex_validation", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "validates"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":format"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "format")), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, ":"), AST_NodeField(node4, node6, "value"), AST_NodeType(node6, "hash"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, "{"), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, "pair"), AST_NodeField(node8, tmp1, "key"), (AST_NodeType(tmp1, "simple_symbol"), AST_NodeContent(tmp1, ":with"); AST_NodeType(tmp1, "hash_key_symbol"), AST_NodeContent(tmp1, "with")), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, ":"), AST_NodeField(node8, node10, "value"), AST_ParentChild(node6, 2, node11), AST_NodeType(node11, "}").
     51 +Rule("ruby_rails_permissive_regex_validation", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "validates_format_of"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":with"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "with")), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, ":"), AST_NodeField(node4, node6, "value").
     52 +Rule("ruby_lang_http_url_using_user_input_curb", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Easy"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     53 +Rule("ruby_rails_insecure_communication", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Rails"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "application"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "configure"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "do_block"), !AST_NodeField(node8, _, "parameters"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "do"), AST_ParentChild(node8, 1, node10), AST_NodeType(node10, "assignment"), AST_NodeField(node10, node11, "left"), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), (!AST_NodeField(node11, _, "arguments"); AST_NodeField(node11, tmp2, "arguments"), !AST_ParentChild(tmp2, _, _)), AST_NodeField(node11, node12, "receiver"), AST_NodeType(node12, "identifier"), AST_NodeContent(node12, "config"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "force_ssl"), AST_ParentChild(node10, 0, node15), AST_NodeType(node15, "="), AST_NodeField(node10, node16, "right"), AST_NodeType(node16, "false"), AST_ParentChild(node8, 2, node17), AST_NodeType(node17, "end").
     54 +Rule("ruby_lang_http_insecure_url_hash", node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "{"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "pair"), AST_NodeField(node3, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, ":"), AST_NodeField(node3, node5, "value"), AST_ParentChild(node1, 2, node6), AST_NodeType(node6, "}").
     55 +Rule("ruby_lang_regex_using_user_input", node1) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "/"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "interpolation"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "#{"), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, "}"), AST_ParentChild(node1, 2, node7), AST_NodeType(node7, "/").
     56 +Rule("ruby_lang_regex_using_user_input", node1) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "/"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "interpolation"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "#{"), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, "}"), AST_ParentChild(node1, 2, node7), AST_NodeType(node7, "/").
     57 +Rule("ruby_lang_regex_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Regexp"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     58 +Rule("ruby_lang_file_generation", node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right").
     59 +Rule("ruby_lang_file_generation", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     60 +Rule("ruby_third_parties_elasticsearch", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_NodeType(node7, "pair"), AST_NodeField(node7, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, ":"), AST_NodeField(node7, node9, "value"), AST_ParentChild(node5, 2, node10), AST_NodeType(node10, ")").
     61 +Rule("ruby_third_parties_elasticsearch", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_NodeType(node7, "hash"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "{"), AST_ParentChild(node7, 1, node9), AST_NodeType(node9, "pair"), AST_NodeField(node9, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_ParentChild(node9, 0, node10), AST_NodeType(node10, ":"), AST_NodeField(node9, node11, "value"), AST_ParentChild(node7, 2, node12), AST_NodeType(node12, "}"), AST_ParentChild(node5, 2, node13), AST_NodeType(node13, ")").
     62 +Rule("ruby_lang_eval_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     63 +Rule("ruby_lang_eval_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     64 +Rule("ruby_lang_eval_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     65 +Rule("ruby_lang_eval_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     66 +Rule("ruby_lang_path_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     67 +Rule("ruby_lang_path_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     68 +Rule("ruby_lang_path_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     69 +Rule("ruby_lang_path_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     70 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     71 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     72 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Net"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "HTTP"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new"), AST_NodeField(node1, node11, "arguments"), AST_NodeType(node11, "argument_list"), AST_ParentChild(node11, 0, node12), AST_NodeType(node12, "("), AST_ParentChild(node11, 1, node13), AST_ParentChild(node11, 2, node14), AST_NodeType(node14, ")").
     73 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     74 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "send_request"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     75 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "ipaddr"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     76 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     77 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "http"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     78 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Curl"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     79 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Easy"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     80 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "url"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     81 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Multi"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     82 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Multi"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     83 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Excon"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Connection"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     84 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     85 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_NodeType(node7, "pair"), AST_NodeField(node7, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, ":"), AST_NodeField(node7, node9, "value"), AST_ParentChild(node5, 2, node10), AST_NodeType(node10, ")").
     86 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_NodeType(node7, "pair"), AST_NodeField(node7, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, ":"), AST_NodeField(node7, node9, "value"), AST_ParentChild(node5, 2, node10), AST_NodeType(node10, ")").
     87 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "requests"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     88 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     89 +Rule("ruby_lang_http_url_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "post"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     90 +Rule("ruby_lang_exec_using_user_input_shell", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new").
     91 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     92 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     93 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     94 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "to_proc").
     95 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "block_argument"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "&"), AST_ParentChild(node5, 1, node7), AST_ParentChild(node3, 2, node8), AST_NodeType(node8, ")").
     96 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_NodeType(node7, "block_argument"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "&"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node5, 2, node10), AST_NodeType(node10, ")").
     97 +Rule("ruby_lang_reflection_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     98 +Rule("openssl_dsa_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "PKey"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "DSA"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new").
     99 +Rule("ruby_lang_weak_encryption_with_data_blowfish_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Crypt"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Blowfish"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     100 +Rule("ruby_third_parties_algolia_client", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Algolia"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Search"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Client"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "create").
     101 +Rule("ruby_third_parties_bigquery_dataset", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "dataset").
     102 +Rule("blowfish_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Crypt"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Blowfish"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     103 +Rule("google_dataflow_config", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure").
     104 +Rule("google_dataflow_config", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     105 +Rule("ruby_rails_insecure_disabling_of_callback", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, ":"), AST_NodeField(node5, node7, "value"), AST_ParentChild(node3, 2, node8), AST_NodeType(node8, ")").
     106 +Rule("ruby_rails_default_encryption", node1) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "class"), !AST_NodeField(node2, _, "name"), !AST_NodeField(node2, _, "superclass"), AST_NodeField(node1, node3, "name"), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "receiver"), !AST_NodeField(node4, _, "block"), AST_NodeField(node4, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "encrypts"), AST_NodeField(node4, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, "("), AST_ParentChild(node6, 1, node8), AST_ParentChild(node6, 2, node9), AST_NodeType(node9, ")"), AST_ParentChild(node1, 2, node10), AST_NodeType(node10, "end").
     107 +Rule("ruby_third_parties_bugsnag", node1) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "class"), !AST_NodeField(node2, _, "name"), !AST_NodeField(node2, _, "superclass"), AST_NodeField(node1, node3, "name"), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "receiver"), !AST_NodeField(node4, _, "block"), AST_NodeField(node4, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "before_bugsnag_notify"), AST_NodeField(node4, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, "("), AST_ParentChild(node6, 1, node8), AST_ParentChild(node6, 2, node9), AST_NodeType(node9, ")"), AST_ParentChild(node1, 2, node10), AST_NodeType(node10, "method"), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, "def"), AST_NodeField(node10, node12, "name"), AST_NodeField(node10, node13, "parameters"), AST_NodeType(node13, "method_parameters"), AST_ParentChild(node13, 0, node14), AST_NodeType(node14, "("), AST_ParentChild(node13, 1, node15), AST_ParentChild(node13, 2, node16), AST_NodeType(node16, ")"), AST_ParentChild(node10, 1, node17), AST_NodeType(node17, "call"), !AST_NodeField(node17, _, "block"), AST_NodeField(node17, node18, "receiver"), AST_ParentChild(node17, 0, node19), AST_NodeType(node19, "."), AST_NodeField(node17, node20, "method"), AST_NodeType(node20, "identifier"), AST_NodeContent(node20, "add_metadata"), AST_NodeField(node17, node21, "arguments"), AST_NodeType(node21, "argument_list"), AST_ParentChild(node21, 0, node22), AST_NodeType(node22, "("), AST_ParentChild(node21, 1, node23), AST_ParentChild(node21, 2, node24), AST_NodeType(node24, ")"), AST_ParentChild(node10, 2, node25), AST_NodeType(node25, "end"), AST_ParentChild(node1, 3, node26), AST_NodeType(node26, "end").
     108 +Rule("ruby_third_parties_bugsnag", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "leave_breadcrumb"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     109 +Rule("ruby_third_parties_bugsnag", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "notify"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     110 +Rule("ruby_third_parties_bugsnag", node1) :- AST_NodeType(node1, "call"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Bugsnag"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "notify"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")"), AST_NodeField(node1, node9, "block"), AST_NodeType(node9, "do_block"), AST_ParentChild(node9, 0, node10), AST_NodeType(node10, "do"), AST_NodeField(node9, node11, "parameters"), AST_NodeType(node11, "block_parameters"), AST_ParentChild(node11, 0, node12), AST_NodeType(node12, "|"), AST_ParentChild(node11, 1, node13), AST_ParentChild(node11, 2, node14), AST_NodeType(node14, "|"), AST_ParentChild(node9, 1, node15), AST_NodeType(node15, "call"), !AST_NodeField(node15, _, "block"), AST_NodeField(node15, node16, "receiver"), AST_ParentChild(node15, 0, node17), AST_NodeType(node17, "."), AST_NodeField(node15, node18, "method"), AST_NodeType(node18, "identifier"), AST_NodeContent(node18, "add_metadata"), AST_NodeField(node15, node19, "arguments"), AST_NodeType(node19, "argument_list"), AST_ParentChild(node19, 0, node20), AST_NodeType(node20, "("), AST_ParentChild(node19, 1, node21), AST_ParentChild(node19, 2, node22), AST_NodeType(node22, ")"), AST_ParentChild(node9, 2, node23), AST_NodeType(node23, "end").
     111 +Rule("ruby_third_parties_datadog_span", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "element_reference"), AST_NodeField(node3, node4, "object"), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "block"), (!AST_NodeField(node4, _, "arguments"); AST_NodeField(node4, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node4, node5, "receiver"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Datadog"), AST_ParentChild(node4, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node4, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "configuration"), AST_ParentChild(node3, 0, node8), AST_NodeType(node8, "["), AST_ParentChild(node3, 1, node9), AST_ParentChild(node3, 2, node10), AST_NodeType(node10, "]"), AST_ParentChild(node2, 0, node11), AST_NodeType(node11, "["), AST_ParentChild(node2, 1, node12), AST_ParentChild(node2, 2, node13), AST_NodeType(node13, "]"), AST_ParentChild(node1, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node1, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "active_span").
     112 +Rule("ruby_third_parties_datadog_span", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Tracing"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "active_span").
     113 +Rule("ruby_third_parties_datadog_span", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Tracing"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "trace"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "block"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "{"), AST_NodeField(node8, node10, "parameters"), AST_NodeType(node10, "block_parameters"), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, "|"), AST_ParentChild(node10, 1, node12), AST_ParentChild(node10, 2, node13), AST_NodeType(node13, "|"), AST_ParentChild(node8, 1, node14), AST_NodeType(node14, "}").
     114 +Rule("ruby_third_parties_rollbar_scope", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "scope").
     115 +Rule("ruby_lang_http_insecure_curb", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Curl"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Easy"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     116 +Rule("ruby_third_parties_datadog", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Datadog"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "assignment"), AST_NodeField(node11, node12, "left"), AST_NodeType(node12, "call"), !AST_NodeField(node12, _, "block"), (!AST_NodeField(node12, _, "arguments"); AST_NodeField(node12, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node12, node13, "receiver"), AST_ParentChild(node12, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node12, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "tags"), AST_ParentChild(node11, 0, node16), AST_NodeType(node16, "="), AST_NodeField(node11, node17, "right"), AST_ParentChild(node5, 2, node18), AST_NodeType(node18, "end").
     117 +Rule("ruby_third_parties_datadog", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "set_tag"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     118 +Rule("ruby_third_parties_datadog", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Datadog"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Tracing"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "trace"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ","), AST_ParentChild(node8, 3, node12), AST_ParentChild(node8, 4, node13), AST_NodeType(node13, ")").
     119 +Rule("ruby_lang_jwt", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "JWT"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "encode"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     120 +Rule("ruby_third_parties_open_telemetry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     121 +Rule("ruby_third_parties_open_telemetry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "in_span"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     122 +Rule("ruby_third_parties_open_telemetry", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "status"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right"), AST_NodeType(node7, "call"), !AST_NodeField(node7, _, "block"), AST_NodeField(node7, node8, "receiver"), AST_NodeType(node8, "scope_resolution"), AST_NodeField(node8, node9, "scope"), AST_NodeType(node9, "scope_resolution"), AST_NodeField(node9, node10, "scope"), AST_NodeType(node10, "constant"), AST_NodeContent(node10, "OpenTelemetry"), AST_ParentChild(node9, 0, node11), AST_NodeType(node11, "::"), AST_NodeField(node9, node12, "name"), AST_NodeType(node12, "constant"), AST_NodeContent(node12, "Trace"), AST_ParentChild(node8, 0, node13), AST_NodeType(node13, "::"), AST_NodeField(node8, node14, "name"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "Status"), AST_ParentChild(node7, 0, node15), AST_NodeType(node15, "."), AST_NodeField(node7, node16, "method"), AST_NodeType(node16, "identifier"), AST_NodeContent(node16, "error"), AST_NodeField(node7, node17, "arguments"), AST_NodeType(node17, "argument_list"), AST_ParentChild(node17, 0, node18), AST_NodeType(node18, "("), AST_ParentChild(node17, 1, node19), AST_ParentChild(node17, 2, node20), AST_NodeType(node20, ")").
     123 +Rule("ruby_rails_redirect_to_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     124 +Rule("ruby_rails_redirect_to_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     125 +Rule("ruby_rails_redirect_to_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     126 +Rule("ruby_lang_path_using_user_input_shell_cmd_proc", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "command_processor").
     127 +Rule("ruby_lang_path_using_user_input_shell_cmd_proc", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "CommandProcessor"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     128 +Rule("google_dataflow_client_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "scope_resolution"), AST_NodeField(node6, node7, "scope"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Google"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node6, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "Cloud"), AST_ParentChild(node5, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node5, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "Dataflow"), AST_ParentChild(node4, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node4, node13, "name"), AST_ParentChild(node3, 0, node14), AST_NodeType(node14, "::"), AST_NodeField(node3, node15, "name"), AST_ParentChild(node2, 0, node16), AST_NodeType(node16, "::"), AST_NodeField(node2, node17, "name"), AST_NodeType(node17, "constant"), AST_NodeContent(node17, "Client"), AST_ParentChild(node1, 0, node18), AST_NodeType(node18, "."), AST_NodeField(node1, node19, "method"), AST_NodeType(node19, "identifier"), AST_NodeContent(node19, "new").
     129 +Rule("google_dataflow_client_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Cloud"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Dataflow"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method").
     130 +Rule("google_dataflow_template_metadata_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Google"), AST_ParentChild(node5, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node5, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Cloud"), AST_ParentChild(node4, 0, node9), AST_NodeType(node9, "::"), AST_NodeField(node4, node10, "name"), AST_NodeType(node10, "constant"), AST_NodeContent(node10, "Dataflow"), AST_ParentChild(node3, 0, node11), AST_NodeType(node11, "::"), AST_NodeField(node3, node12, "name"), AST_ParentChild(node2, 0, node13), AST_NodeType(node13, "::"), AST_NodeField(node2, node14, "name"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "TemplateMetadata"), AST_ParentChild(node1, 0, node15), AST_NodeType(node15, "."), AST_NodeField(node1, node16, "method"), AST_NodeType(node16, "identifier"), AST_NodeContent(node16, "new").
     131 +Rule("open_telemetry_current_span", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "OpenTelemetry"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Trace"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "current_span").
     132 +Rule("open_telemetry_current_span", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "in_span"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     133 +Rule("ruby_third_parties_rollbar", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "rollbar_context"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     134 +Rule("ruby_third_parties_rollbar", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     135 +Rule("ruby_third_parties_rollbar", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "log"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     136 +Rule("ruby_third_parties_rollbar", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "scope"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     137 +Rule("ruby_third_parties_rollbar", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rollbar"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "scoped"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     138 +Rule("ruby_third_parties_elasticsearch_client", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Elasticsearch"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Client"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     139 +Rule("ruby_third_parties_elasticsearch_client", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Elasticsearch"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Client"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     140 +Rule("ruby_lang_path_using_user_input_shell_cmd_trans_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     141 +Rule("ruby_rails_logger", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Rails"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "logger"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     142 +Rule("ruby_third_parties_algolia_index", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "init_index").
     143 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "SHA1"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "hexidigest").
     144 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Digest"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "MD5"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "hexdigest").
     145 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     146 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     147 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     148 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     149 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     150 +Rule("ruby_lang_weak_encryption", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), !AST_NodeField(node5, _, "parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, "end").
     151 +Rule("ruby_lang_hardcoded_secret", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "="), AST_NodeField(node1, node4, "right").
     152 +Rule("ruby_lang_hardcoded_secret", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, ":"), AST_NodeField(node5, node7, "value"), AST_ParentChild(node3, 2, node8), AST_NodeType(node8, ")").
     153 +Rule("ruby_lang_hardcoded_secret", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, node6, "key"), AST_ParentChild(node5, 0, node7), AST_NodeType(node7, "=>"), AST_NodeField(node5, node8, "value"), AST_ParentChild(node3, 2, node9), AST_NodeType(node9, ")").
     154 +Rule("ruby_lang_hardcoded_secret", node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "{"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "pair"), AST_NodeField(node3, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar0"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar0")), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, ":"), AST_NodeField(node3, node5, "value"), AST_ParentChild(node1, 2, node6), AST_NodeType(node6, "}").
     155 +Rule("ruby_lang_hardcoded_secret", node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "{"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "pair"), AST_NodeField(node3, node4, "key"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "=>"), AST_NodeField(node3, node6, "value"), AST_ParentChild(node1, 2, node7), AST_NodeType(node7, "}").
     156 +Rule("ruby_rails_session_key_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     157 +Rule("ruby_rails_session_key_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     158 +Rule("ruby_rails_session_key_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     159 +Rule("ruby_lang_regex_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     160 +Rule("ruby_lang_regex_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     161 +Rule("ruby_lang_regex_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     162 +Rule("ruby_lang_regex_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     163 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "generate").
     164 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "generate"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     165 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open").
     166 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "CSV"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     167 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "File"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open").
     168 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "File"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     169 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open").
     170 +Rule("ruby_lang_file_generation_file", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     171 +Rule("ruby_lang_http_url_using_user_input_net_http", node1) :- .
     172 +Rule("ruby_lang_http_url_using_user_input_net_http", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "start"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "}").
     173 +Rule("ruby_lang_http_url_using_user_input_net_http", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "start").
     174 +Rule("ruby_third_parties_bigquery", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "insert"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     175 +Rule("ruby_lang_cookies", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "cookies"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "["), AST_ParentChild(node2, 1, node5), AST_ParentChild(node2, 2, node6), AST_NodeType(node6, "]"), AST_ParentChild(node1, 0, node7), AST_NodeType(node7, "="), AST_NodeField(node1, node8, "right").
     176 +Rule("ruby_lang_cookies", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "cookies"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "."), AST_NodeField(node3, node6, "method"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "["), AST_ParentChild(node2, 1, node8), AST_ParentChild(node2, 2, node9), AST_NodeType(node9, "]"), AST_ParentChild(node1, 0, node10), AST_NodeType(node10, "="), AST_NodeField(node1, node11, "right").
     177 +Rule("ruby_lang_cookies", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "block"), (!AST_NodeField(node4, _, "arguments"); AST_NodeField(node4, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node4, node5, "receiver"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "cookies"), AST_ParentChild(node4, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node4, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "permanent"), AST_ParentChild(node3, 0, node8), AST_NodeType(node8, "."), AST_NodeField(node3, node9, "method"), AST_NodeType(node9, "identifier"), AST_NodeContent(node9, "signed"), AST_ParentChild(node2, 0, node10), AST_NodeType(node10, "["), AST_ParentChild(node2, 1, node11), AST_ParentChild(node2, 2, node12), AST_NodeType(node12, "]"), AST_ParentChild(node1, 0, node13), AST_NodeType(node13, "="), AST_NodeField(node1, node14, "right").
     178 +Rule("ruby_lang_cookies", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "block"), (!AST_NodeField(node3, _, "arguments"); AST_NodeField(node3, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node3, node4, "receiver"), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "block"), (!AST_NodeField(node4, _, "arguments"); AST_NodeField(node4, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node4, node5, "receiver"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "cookies"), AST_ParentChild(node4, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node4, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "signed"), AST_ParentChild(node3, 0, node8), AST_NodeType(node8, "."), AST_NodeField(node3, node9, "method"), AST_NodeType(node9, "identifier"), AST_NodeContent(node9, "permanent"), AST_ParentChild(node2, 0, node10), AST_NodeType(node10, "["), AST_ParentChild(node2, 1, node11), AST_ParentChild(node2, 2, node12), AST_NodeType(node12, "]"), AST_ParentChild(node1, 0, node13), AST_NodeType(node13, "="), AST_NodeField(node1, node14, "right").
     179 +Rule("ruby_lang_deserialization_of_user_input_sanitized_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "JSON"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "parse").
     180 +Rule("ruby_lang_deserialization_of_user_input_sanitized_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Nokogiri"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "XML").
     181 +Rule("rc4_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "RC4"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new").
     182 +Rule("ruby_rails_session_key_using_user_input", node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "session"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "["), AST_ParentChild(node1, 1, node4), AST_ParentChild(node1, 2, node5), AST_NodeType(node5, "]").
     183 +Rule("ruby_rails_password_length", node1) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "class"), !AST_NodeField(node2, _, "name"), !AST_NodeField(node2, _, "superclass"), AST_NodeField(node1, node3, "name"), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "receiver"), !AST_NodeField(node4, _, "block"), AST_NodeField(node4, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "validates"), AST_NodeField(node4, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, "simple_symbol"), AST_NodeContent(node7, ":password"), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, ","), AST_ParentChild(node6, 2, node9), AST_NodeType(node9, "pair"), AST_NodeField(node9, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":length"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "length")), AST_ParentChild(node9, 0, node10), AST_NodeType(node10, ":"), AST_NodeField(node9, node11, "value"), AST_NodeType(node11, "hash"), AST_ParentChild(node11, 0, node12), AST_NodeType(node12, "{"), AST_ParentChild(node11, 1, node13), AST_NodeType(node13, "pair"), AST_NodeField(node13, tmp1, "key"), (AST_NodeType(tmp1, "simple_symbol"), AST_NodeContent(tmp1, ":minimum"); AST_NodeType(tmp1, "hash_key_symbol"), AST_NodeContent(tmp1, "minimum")), AST_ParentChild(node13, 0, node14), AST_NodeType(node14, ":"), AST_NodeField(node13, node15, "value"), AST_ParentChild(node11, 2, node16), AST_NodeType(node16, "}"), AST_ParentChild(node1, 2, node17), AST_NodeType(node17, "end").
     184 +Rule("ruby_rails_password_length", node1) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "class"), !AST_NodeField(node2, _, "name"), !AST_NodeField(node2, _, "superclass"), AST_NodeField(node1, node3, "name"), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, "call"), !AST_NodeField(node4, _, "receiver"), !AST_NodeField(node4, _, "block"), AST_NodeField(node4, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "devise"), AST_NodeField(node4, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, "pair"), AST_NodeField(node7, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":password_length"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "password_length")), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, ":"), AST_NodeField(node7, node9, "value"), AST_NodeType(node9, "range"), AST_NodeField(node9, node10, "begin"), AST_NodeField(node9, node11, "operator"), AST_NodeType(node11, ".."), AST_NodeField(node9, node12, "end"), AST_ParentChild(node1, 2, node13), AST_NodeType(node13, "end").
     185 +Rule("ruby_rails_password_length", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Devise"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "setup"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "assignment"), AST_NodeField(node11, node12, "left"), AST_NodeType(node12, "call"), !AST_NodeField(node12, _, "block"), (!AST_NodeField(node12, _, "arguments"); AST_NodeField(node12, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node12, node13, "receiver"), AST_ParentChild(node12, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node12, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "password_length"), AST_ParentChild(node11, 0, node16), AST_NodeType(node16, "="), AST_NodeField(node11, node17, "right"), AST_NodeType(node17, "range"), AST_NodeField(node17, node18, "begin"), AST_NodeField(node17, node19, "operator"), AST_NodeType(node19, ".."), AST_NodeField(node17, node20, "end"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     186 +Rule("ruby_rails_password_length", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Devise"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "setup"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "assignment"), AST_NodeField(node11, node12, "left"), AST_NodeType(node12, "call"), !AST_NodeField(node12, _, "block"), (!AST_NodeField(node12, _, "arguments"); AST_NodeField(node12, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node12, node13, "receiver"), AST_ParentChild(node12, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node12, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "password_length"), AST_ParentChild(node11, 0, node16), AST_NodeType(node16, "="), AST_NodeField(node11, node17, "right"), AST_ParentChild(node5, 2, node18), AST_NodeType(node18, "end").
     187 +Rule("ruby_lang_http_post_insecure_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "post_form"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ","), AST_ParentChild(node8, 3, node12), AST_ParentChild(node8, 4, node13), AST_NodeType(node13, ")").
     188 +Rule("ruby_lang_http_post_insecure_with_data", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "post"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     189 +Rule("ruby_third_parties_clickhouse_insert_rows", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Clickhouse"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "connection"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "insert_rows"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "block"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "{"), AST_NodeField(node8, node10, "parameters"), AST_NodeType(node10, "block_parameters"), AST_ParentChild(node10, 0, node11), AST_NodeType(node11, "|"), AST_ParentChild(node10, 1, node12), AST_ParentChild(node10, 2, node13), AST_NodeType(node13, "|"), AST_ParentChild(node8, 1, node14), AST_NodeType(node14, "}").
     190 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Kernel"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     191 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     192 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "popen"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     193 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Process"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     194 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Open3"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     195 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Gem"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Util"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     196 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "PTY"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "spawn"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     197 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "`"), AST_ParentChild(node1, 1, node3), AST_ParentChild(node1, 2, node4), AST_NodeType(node4, "`").
     198 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "`"), AST_ParentChild(node1, 1, node3), AST_NodeType(node3, "string_content"), AST_NodeContent(node3, "{CurioVar0"), AST_ParentChild(node1, 2, node4), AST_NodeType(node4, "`").
     199 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     200 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "CommandProcessor"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     201 +Rule("ruby_lang_exec_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "system"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     202 +Rule("ruby_lang_ftp_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     203 +Rule("ruby_lang_ftp_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "open"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     204 +Rule("ruby_lang_ftp_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     205 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Sentry"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Breadcrumb"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     206 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "capture_message"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     207 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "init"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "assignment"), AST_NodeField(node11, node12, "left"), AST_NodeType(node12, "call"), !AST_NodeField(node12, _, "block"), (!AST_NodeField(node12, _, "arguments"); AST_NodeField(node12, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node12, node13, "receiver"), AST_ParentChild(node12, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node12, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "before_breadcrumb"), AST_ParentChild(node11, 0, node16), AST_NodeType(node16, "="), AST_NodeField(node11, node17, "right"), AST_NodeType(node17, "call"), !AST_NodeField(node17, _, "receiver"), (!AST_NodeField(node17, _, "arguments"); AST_NodeField(node17, tmp2, "arguments"), !AST_ParentChild(tmp2, _, _)), AST_NodeField(node17, node18, "method"), AST_NodeType(node18, "identifier"), AST_NodeContent(node18, "lambda"), AST_NodeField(node17, node19, "block"), AST_NodeType(node19, "do_block"), AST_ParentChild(node19, 0, node20), AST_NodeType(node20, "do"), AST_NodeField(node19, node21, "parameters"), AST_NodeType(node21, "block_parameters"), AST_ParentChild(node21, 0, node22), AST_NodeType(node22, "|"), AST_ParentChild(node21, 1, node23), AST_ParentChild(node21, 2, node24), AST_NodeType(node24, ","), AST_ParentChild(node21, 3, node25), AST_ParentChild(node21, 4, node26), AST_NodeType(node26, "|"), AST_ParentChild(node19, 1, node27), AST_NodeType(node27, "assignment"), AST_NodeField(node27, node28, "left"), AST_NodeType(node28, "call"), !AST_NodeField(node28, _, "block"), (!AST_NodeField(node28, _, "arguments"); AST_NodeField(node28, tmp3, "arguments"), !AST_ParentChild(tmp3, _, _)), AST_NodeField(node28, node29, "receiver"), AST_ParentChild(node28, 0, node30), AST_NodeType(node30, "."), AST_NodeField(node28, node31, "method"), AST_NodeType(node31, "identifier"), AST_NodeContent(node31, "message"), AST_ParentChild(node27, 0, node32), AST_NodeType(node32, "="), AST_NodeField(node27, node33, "right"), AST_ParentChild(node19, 2, node34), AST_NodeType(node34, "end"), AST_ParentChild(node5, 2, node35), AST_NodeType(node35, "end").
     208 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "set_context"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ","), AST_ParentChild(node5, 3, node9), AST_ParentChild(node5, 4, node10), AST_NodeType(node10, ")").
     209 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_context"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ","), AST_ParentChild(node15, 3, node19), AST_ParentChild(node15, 4, node20), AST_NodeType(node20, ")"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     210 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "with_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_context"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ","), AST_ParentChild(node15, 3, node19), AST_ParentChild(node15, 4, node20), AST_NodeType(node20, ")"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     211 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_extra"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ","), AST_ParentChild(node15, 3, node19), AST_ParentChild(node15, 4, node20), AST_NodeType(node20, ")"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     212 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "with_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_extra"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ","), AST_ParentChild(node15, 3, node19), AST_ParentChild(node15, 4, node20), AST_NodeType(node20, ")"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     213 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "set_extras"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     214 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_extras"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ")"), AST_ParentChild(node5, 2, node19), AST_NodeType(node19, "end").
     215 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "with_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_extras"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ")"), AST_ParentChild(node5, 2, node19), AST_NodeType(node19, "end").
     216 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_tag"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ","), AST_ParentChild(node15, 3, node19), AST_ParentChild(node15, 4, node20), AST_NodeType(node20, ")"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     217 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "with_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_tag"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ","), AST_ParentChild(node15, 3, node19), AST_ParentChild(node15, 4, node20), AST_NodeType(node20, ")"), AST_ParentChild(node5, 2, node21), AST_NodeType(node21, "end").
     218 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "set_tags"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     219 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_tags"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ")"), AST_ParentChild(node5, 2, node19), AST_NodeType(node19, "end").
     220 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "with_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_tags"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ")"), AST_ParentChild(node5, 2, node19), AST_NodeType(node19, "end").
     221 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "set_user"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     222 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "configure_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_user"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ")"), AST_ParentChild(node5, 2, node19), AST_NodeType(node19, "end").
     223 +Rule("ruby_third_parties_sentry", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Sentry"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "with_scope"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), AST_NodeField(node11, node12, "receiver"), AST_ParentChild(node11, 0, node13), AST_NodeType(node13, "."), AST_NodeField(node11, node14, "method"), AST_NodeType(node14, "identifier"), AST_NodeContent(node14, "set_user"), AST_NodeField(node11, node15, "arguments"), AST_NodeType(node15, "argument_list"), AST_ParentChild(node15, 0, node16), AST_NodeType(node16, "("), AST_ParentChild(node15, 1, node17), AST_ParentChild(node15, 2, node18), AST_NodeType(node18, ")"), AST_ParentChild(node5, 2, node19), AST_NodeType(node19, "end").
     224 +Rule("ruby_rails_render_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     225 +Rule("ruby_rails_render_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     226 +Rule("ruby_rails_render_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     227 +Rule("ruby_third_parties_bigquery_client", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Cloud"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Bigquery"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new").
     228 +Rule("ruby_third_parties_bigquery_client", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Cloud"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Bigquery"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new").
     229 +Rule("ruby_lang_http_url_using_user_input_excon", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Excon"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new").
     230 +Rule("ruby_lang_http_url_using_user_input_excon", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Excon"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Connection"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     231 +Rule("ruby_rails_render_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "render"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":inline"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "inline")), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, ":"), AST_NodeField(node5, node7, "value"), AST_ParentChild(node3, 2, node8), AST_NodeType(node8, ")").
     232 +Rule("ruby_rails_render_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "render"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":html"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "html")), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, ":"), AST_NodeField(node5, node7, "value"), AST_ParentChild(node3, 2, node8), AST_NodeType(node8, ")").
     233 +Rule("ruby_rails_insecure_smtp", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Rails"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "application"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "configure"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "do_block"), !AST_NodeField(node8, _, "parameters"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "do"), AST_ParentChild(node8, 1, node10), AST_NodeType(node10, "assignment"), AST_NodeField(node10, node11, "left"), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), (!AST_NodeField(node11, _, "arguments"); AST_NodeField(node11, tmp2, "arguments"), !AST_ParentChild(tmp2, _, _)), AST_NodeField(node11, node12, "receiver"), AST_NodeType(node12, "call"), !AST_NodeField(node12, _, "block"), (!AST_NodeField(node12, _, "arguments"); AST_NodeField(node12, tmp3, "arguments"), !AST_ParentChild(tmp3, _, _)), AST_NodeField(node12, node13, "receiver"), AST_NodeType(node13, "identifier"), AST_NodeContent(node13, "config"), AST_ParentChild(node12, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node12, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "action_mailer"), AST_ParentChild(node11, 0, node16), AST_NodeType(node16, "."), AST_NodeField(node11, node17, "method"), AST_NodeType(node17, "identifier"), AST_NodeContent(node17, "smtp_settings"), AST_ParentChild(node10, 0, node18), AST_NodeType(node18, "="), AST_NodeField(node10, node19, "right"), AST_NodeType(node19, "hash"), AST_ParentChild(node19, 0, node20), AST_NodeType(node20, "{"), AST_ParentChild(node19, 1, node21), AST_NodeType(node21, "pair"), AST_NodeField(node21, tmp4, "key"), (AST_NodeType(tmp4, "simple_symbol"), AST_NodeContent(tmp4, ":openssl_verify_mode"); AST_NodeType(tmp4, "hash_key_symbol"), AST_NodeContent(tmp4, "openssl_verify_mode")), AST_ParentChild(node21, 0, node22), AST_NodeType(node22, ":"), AST_NodeField(node21, node23, "value"), AST_NodeType(node23, "scope_resolution"), AST_NodeField(node23, node24, "scope"), AST_NodeType(node24, "scope_resolution"), AST_NodeField(node24, node25, "scope"), AST_NodeType(node25, "constant"), AST_NodeContent(node25, "OpenSSL"), AST_ParentChild(node24, 0, node26), AST_NodeType(node26, "::"), AST_NodeField(node24, node27, "name"), AST_NodeType(node27, "constant"), AST_NodeContent(node27, "SSL"), AST_ParentChild(node23, 0, node28), AST_NodeType(node28, "::"), AST_NodeField(node23, node29, "name"), AST_NodeType(node29, "constant"), AST_NodeContent(node29, "VERIFY_NONE"), AST_ParentChild(node19, 2, node30), AST_NodeType(node30, "}"), AST_ParentChild(node8, 2, node31), AST_NodeType(node31, "end").
     234 +Rule("ruby_rails_insecure_smtp", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp1, "arguments"), !AST_ParentChild(tmp1, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Rails"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "application"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "configure"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "do_block"), !AST_NodeField(node8, _, "parameters"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "do"), AST_ParentChild(node8, 1, node10), AST_NodeType(node10, "assignment"), AST_NodeField(node10, node11, "left"), AST_NodeType(node11, "call"), !AST_NodeField(node11, _, "block"), (!AST_NodeField(node11, _, "arguments"); AST_NodeField(node11, tmp2, "arguments"), !AST_ParentChild(tmp2, _, _)), AST_NodeField(node11, node12, "receiver"), AST_NodeType(node12, "call"), !AST_NodeField(node12, _, "block"), (!AST_NodeField(node12, _, "arguments"); AST_NodeField(node12, tmp3, "arguments"), !AST_ParentChild(tmp3, _, _)), AST_NodeField(node12, node13, "receiver"), AST_NodeType(node13, "identifier"), AST_NodeContent(node13, "config"), AST_ParentChild(node12, 0, node14), AST_NodeType(node14, "."), AST_NodeField(node12, node15, "method"), AST_NodeType(node15, "identifier"), AST_NodeContent(node15, "action_mailer"), AST_ParentChild(node11, 0, node16), AST_NodeType(node16, "."), AST_NodeField(node11, node17, "method"), AST_NodeType(node17, "identifier"), AST_NodeContent(node17, "smtp_settings"), AST_ParentChild(node10, 0, node18), AST_NodeType(node18, "="), AST_NodeField(node10, node19, "right"), AST_NodeType(node19, "hash"), AST_ParentChild(node19, 0, node20), AST_NodeType(node20, "{"), AST_ParentChild(node19, 1, node21), AST_NodeType(node21, "pair"), AST_NodeField(node21, tmp4, "key"), (AST_NodeType(tmp4, "simple_symbol"), AST_NodeContent(tmp4, ":openssl_verify_mode"); AST_NodeType(tmp4, "hash_key_symbol"), AST_NodeContent(tmp4, "openssl_verify_mode")), AST_ParentChild(node21, 0, node22), AST_NodeType(node22, ":"), AST_NodeField(node21, node23, "value"), AST_NodeType(node23, "string"), AST_ParentChild(node23, 0, node24), AST_NodeType(node24, "\""), AST_ParentChild(node23, 1, node25), AST_NodeType(node25, "string_content"), AST_NodeContent(node25, "none"), AST_ParentChild(node23, 2, node26), AST_NodeType(node26, "\""), AST_ParentChild(node19, 2, node27), AST_NodeType(node27, "}"), AST_ParentChild(node8, 2, node28), AST_NodeType(node28, "end").
     235 +Rule("google_dataflow_message_text_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Google"), AST_ParentChild(node5, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node5, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Cloud"), AST_ParentChild(node4, 0, node9), AST_NodeType(node9, "::"), AST_NodeField(node4, node10, "name"), AST_NodeType(node10, "constant"), AST_NodeContent(node10, "Dataflow"), AST_ParentChild(node3, 0, node11), AST_NodeType(node11, "::"), AST_NodeField(node3, node12, "name"), AST_ParentChild(node2, 0, node13), AST_NodeType(node13, "::"), AST_NodeField(node2, node14, "name"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "StructuredMessage"), AST_ParentChild(node1, 0, node15), AST_NodeType(node15, "."), AST_NodeField(node1, node16, "method"), AST_NodeType(node16, "identifier"), AST_NodeContent(node16, "new").
     236 +Rule("google_dataflow_message_text_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Google"), AST_ParentChild(node5, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node5, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Cloud"), AST_ParentChild(node4, 0, node9), AST_NodeType(node9, "::"), AST_NodeField(node4, node10, "name"), AST_NodeType(node10, "constant"), AST_NodeContent(node10, "Dataflow"), AST_ParentChild(node3, 0, node11), AST_NodeType(node11, "::"), AST_NodeField(node3, node12, "name"), AST_ParentChild(node2, 0, node13), AST_NodeType(node13, "::"), AST_NodeField(node2, node14, "name"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "JobMessage"), AST_ParentChild(node1, 0, node15), AST_NodeType(node15, "."), AST_NodeField(node1, node16, "method"), AST_NodeType(node16, "identifier"), AST_NodeContent(node16, "new").
     237 +Rule("ruby_lang_logger", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "logger"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     238 +Rule("ruby_lang_path_using_user_input_shell", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new").
     239 +Rule("google_dataflow_value_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Google"), AST_ParentChild(node5, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node5, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Cloud"), AST_ParentChild(node4, 0, node9), AST_NodeType(node9, "::"), AST_NodeField(node4, node10, "name"), AST_NodeType(node10, "constant"), AST_NodeContent(node10, "Dataflow"), AST_ParentChild(node3, 0, node11), AST_NodeType(node11, "::"), AST_NodeField(node3, node12, "name"), AST_ParentChild(node2, 0, node13), AST_NodeType(node13, "::"), AST_NodeField(node2, node14, "name"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "JobMessage"), AST_ParentChild(node1, 0, node15), AST_NodeType(node15, "."), AST_NodeField(node1, node16, "method"), AST_NodeType(node16, "identifier"), AST_NodeContent(node16, "new").
     240 +Rule("google_dataflow_value_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "scope_resolution"), AST_NodeField(node6, node7, "scope"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Google"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node6, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "Cloud"), AST_ParentChild(node5, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node5, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "Dataflow"), AST_ParentChild(node4, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node4, node13, "name"), AST_ParentChild(node3, 0, node14), AST_NodeType(node14, "::"), AST_NodeField(node3, node15, "name"), AST_NodeType(node15, "constant"), AST_NodeContent(node15, "CreateJobFromTemplateRequest"), AST_ParentChild(node2, 0, node16), AST_NodeType(node16, "::"), AST_NodeField(node2, node17, "name"), AST_NodeType(node17, "constant"), AST_NodeContent(node17, "ParametersEntry"), AST_ParentChild(node1, 0, node18), AST_NodeType(node18, "."), AST_NodeField(node1, node19, "method"), AST_NodeType(node19, "identifier"), AST_NodeContent(node19, "new").
     241 +Rule("google_dataflow_value_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "scope_resolution"), AST_NodeField(node6, node7, "scope"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Google"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node6, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "Cloud"), AST_ParentChild(node5, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node5, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "Dataflow"), AST_ParentChild(node4, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node4, node13, "name"), AST_ParentChild(node3, 0, node14), AST_NodeType(node14, "::"), AST_NodeField(node3, node15, "name"), AST_NodeType(node15, "constant"), AST_NodeContent(node15, "ParameterMetadata"), AST_ParentChild(node2, 0, node16), AST_NodeType(node16, "::"), AST_NodeField(node2, node17, "name"), AST_NodeType(node17, "constant"), AST_NodeContent(node17, "CustomMetadataEntry"), AST_ParentChild(node1, 0, node18), AST_NodeType(node18, "."), AST_NodeField(node1, node19, "method"), AST_NodeType(node19, "identifier"), AST_NodeContent(node19, "new").
     242 +Rule("google_dataflow_value_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "scope_resolution"), AST_NodeField(node6, node7, "scope"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Google"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node6, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "Cloud"), AST_ParentChild(node5, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node5, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "Dataflow"), AST_ParentChild(node4, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node4, node13, "name"), AST_ParentChild(node3, 0, node14), AST_NodeType(node14, "::"), AST_NodeField(node3, node15, "name"), AST_NodeType(node15, "constant"), AST_NodeContent(node15, "StructuredMessage"), AST_ParentChild(node2, 0, node16), AST_NodeType(node16, "::"), AST_NodeField(node2, node17, "name"), AST_NodeType(node17, "constant"), AST_NodeContent(node17, "Parameter"), AST_ParentChild(node1, 0, node18), AST_NodeType(node18, "."), AST_NodeField(node1, node19, "method"), AST_NodeType(node19, "identifier"), AST_NodeContent(node19, "new").
     243 +Rule("ruby_third_parties_google_analytics", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Google"), AST_ParentChild(node4, 0, node6), AST_NodeType(node6, "::"), AST_NodeField(node4, node7, "name"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Apis"), AST_ParentChild(node3, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node3, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "AnalyticsreportingV4"), AST_ParentChild(node2, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node2, node11, "name"), AST_ParentChild(node1, 0, node12), AST_NodeType(node12, "."), AST_NodeField(node1, node13, "method"), AST_NodeField(node1, node14, "arguments"), AST_NodeType(node14, "argument_list"), AST_ParentChild(node14, 0, node15), AST_NodeType(node15, "("), AST_ParentChild(node14, 1, node16), AST_ParentChild(node14, 2, node17), AST_NodeType(node17, ")").
     244 +Rule("ruby_lang_deserialization_of_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "load"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     245 +Rule("ruby_lang_deserialization_of_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Marshal"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "restore"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     246 +Rule("ruby_lang_deserialization_of_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Oj"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "object_load"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     247 +Rule("ruby_lang_exec_using_user_input_shell_cmd_proc", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "command_processor").
     248 +Rule("ruby_lang_exec_using_user_input_shell_cmd_proc", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "CommandProcessor"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     249 +Rule("ruby_third_parties_google_dataflow", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "message_text"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     250 +Rule("ruby_third_parties_google_dataflow", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "description"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     251 +Rule("ruby_third_parties_google_dataflow", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "value"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     252 +Rule("ruby_third_parties_google_dataflow", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "create_job_from_template"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     253 +Rule("ruby_third_parties_google_dataflow", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     254 +Rule("ruby_third_parties_google_dataflow", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "metadata"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     255 +Rule("ruby_third_parties_bigquery_table", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "table").
     256 +Rule("ruby_third_parties_bigquery_table", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "create_table").
     257 +Rule("ruby_lang_reflection_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     258 +Rule("ruby_lang_reflection_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     259 +Rule("ruby_lang_reflection_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     260 +Rule("ruby_lang_reflection_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     261 +Rule("ruby_rails_session", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "element_reference"), AST_NodeField(node2, node3, "object"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "session"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "["), AST_ParentChild(node2, 1, node5), AST_ParentChild(node2, 2, node6), AST_NodeType(node6, "]"), AST_ParentChild(node1, 0, node7), AST_NodeType(node7, "="), AST_NodeField(node1, node8, "right").
     262 +Rule("ruby_lang_eval_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "RubyVM"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "InstructionSequence"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "compile"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     263 +Rule("ruby_lang_eval_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     264 +Rule("ruby_lang_eval_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     265 +Rule("ruby_lang_weak_encryption_with_data_openssl_dsa_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "PKey"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "DSA"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new").
     266 +Rule("ruby_lang_http_get_params", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "encode_www_form"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     267 +Rule("ruby_lang_http_get_params", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "URI"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     268 +Rule("ruby_lang_http_get_params", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     269 +Rule("ruby_third_parties_algolia", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     270 +Rule("ruby_lang_insecure_ftp", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     271 +Rule("ruby_lang_insecure_ftp", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "open"), AST_NodeField(node1, node8, "block"), AST_NodeType(node8, "do_block"), !AST_NodeField(node8, _, "parameters"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "do"), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, "end").
     272 +Rule("ruby_lang_insecure_ftp", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "FTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "open").
     273 +Rule("ruby_third_parties_bigquery_insert_async", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "insert_async").
     274 +Rule("ruby_third_parties_bigquery_insert_async", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "insert_async").
     275 +Rule("ruby_third_parties_bigquery_insert_async", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "insert_async").
     276 +Rule("ruby_third_parties_clickhouse", node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right").
     277 +Rule("segment_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Segment"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Analytics"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     278 +Rule("openssl_rsa_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "OpenSSL"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "PKey"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "RSA"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "new"), AST_NodeField(node1, node11, "arguments"), AST_NodeType(node11, "argument_list"), AST_ParentChild(node11, 0, node12), AST_NodeType(node12, "("), AST_ParentChild(node11, 1, node13), AST_ParentChild(node11, 2, node14), AST_NodeType(node14, ")").
     279 +Rule("ruby_lang_weak_encryption_with_data_rc4_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "RC4"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new").
     280 +Rule("ruby_third_parties_new_relic", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Agent"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "add_custom_attributes"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     281 +Rule("ruby_third_parties_new_relic", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Agent"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "add_custom_parameters"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     282 +Rule("ruby_third_parties_new_relic", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "NewRelic"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Agent"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "notice_error"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     283 +Rule("ruby_lang_path_using_user_input_pathname", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Rails"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "root").
     284 +Rule("ruby_lang_path_using_user_input_pathname", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Pathname"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method").
     285 +Rule("ruby_lang_deserialization_of_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     286 +Rule("ruby_lang_deserialization_of_user_input_user_input", node1) :- .
     287 +Rule("ruby_third_parties_honeybadger", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "notify"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     288 +Rule("ruby_third_parties_honeybadger", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "context"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     289 +Rule("ruby_third_parties_honeybadger", node1) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "to_honeybadger_context"), AST_ParentChild(node1, 1, node4), AST_ParentChild(node1, 2, node5), AST_NodeType(node5, "end").
     290 +Rule("ruby_third_parties_honeybadger", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Honeybadger"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "add_breadcrumb"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     291 +Rule("ruby_lang_http_url_using_user_input_net_http_new", node1) :- AST_NodeType(node1, "call"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "start"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")"), AST_NodeField(node1, node12, "block"), AST_NodeType(node12, "block"), AST_ParentChild(node12, 0, node13), AST_NodeType(node13, "{"), AST_NodeField(node12, node14, "parameters"), AST_NodeType(node14, "block_parameters"), AST_ParentChild(node14, 0, node15), AST_NodeType(node15, "|"), AST_ParentChild(node14, 1, node16), AST_ParentChild(node14, 2, node17), AST_NodeType(node17, "|"), AST_ParentChild(node12, 1, node18), AST_NodeType(node18, "}").
     292 +Rule("ruby_lang_http_url_using_user_input_net_http_new", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Net"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "HTTP"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     293 +Rule("google_dataflow_snapshots_client_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "scope_resolution"), AST_NodeField(node6, node7, "scope"), AST_NodeType(node7, "constant"), AST_NodeContent(node7, "Google"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, "::"), AST_NodeField(node6, node9, "name"), AST_NodeType(node9, "constant"), AST_NodeContent(node9, "Cloud"), AST_ParentChild(node5, 0, node10), AST_NodeType(node10, "::"), AST_NodeField(node5, node11, "name"), AST_NodeType(node11, "constant"), AST_NodeContent(node11, "Dataflow"), AST_ParentChild(node4, 0, node12), AST_NodeType(node12, "::"), AST_NodeField(node4, node13, "name"), AST_ParentChild(node3, 0, node14), AST_NodeType(node14, "::"), AST_NodeField(node3, node15, "name"), AST_NodeType(node15, "constant"), AST_NodeContent(node15, "Snapshots"), AST_ParentChild(node2, 0, node16), AST_NodeType(node16, "::"), AST_NodeField(node2, node17, "name"), AST_NodeType(node17, "constant"), AST_NodeContent(node17, "Client"), AST_ParentChild(node1, 0, node18), AST_NodeType(node18, "."), AST_NodeField(node1, node19, "method"), AST_NodeType(node19, "identifier"), AST_NodeContent(node19, "new").
     294 +Rule("google_dataflow_snapshots_client_init", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Google"), AST_ParentChild(node3, 0, node5), AST_NodeType(node5, "::"), AST_NodeField(node3, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Cloud"), AST_ParentChild(node2, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node2, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Dataflow"), AST_ParentChild(node1, 0, node9), AST_NodeType(node9, "."), AST_NodeField(node1, node10, "method"), AST_NodeType(node10, "identifier"), AST_NodeContent(node10, "snapshots").
     295 +Rule("ruby_lang_exec_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     296 +Rule("ruby_lang_exec_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     297 +Rule("ruby_lang_exec_using_user_input_user_input", node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     298 +Rule("ruby_lang_exec_using_user_input_user_input", node1) :- AST_NodeType(node1, "method"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeField(node1, node4, "parameters"), AST_NodeType(node4, "method_parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "("), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "event"), AST_ParentChild(node6, 0, node8), AST_NodeType(node8, ":"), AST_ParentChild(node4, 2, node9), AST_NodeType(node9, ","), AST_ParentChild(node4, 3, node10), AST_NodeType(node10, "keyword_parameter"), !AST_NodeField(node10, _, "value"), AST_NodeField(node10, node11, "name"), AST_NodeType(node11, "identifier"), AST_NodeContent(node11, "context"), AST_ParentChild(node10, 0, node12), AST_NodeType(node12, ":"), AST_ParentChild(node4, 4, node13), AST_NodeType(node13, ")"), AST_ParentChild(node1, 1, node14), AST_NodeType(node14, "end").
     299 +Rule("ruby_third_parties_scout_apm", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "ScoutApm"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Context"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "add_user"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     300 +Rule("ruby_third_parties_scout_apm", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "ScoutApm"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Context"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "add"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     301 +Rule("ruby_third_parties_airbrake", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     302 +Rule("ruby_third_parties_airbrake", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_NodeField(node5, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, "|"), AST_ParentChild(node7, 1, node9), AST_ParentChild(node7, 2, node10), AST_NodeType(node10, "|"), AST_ParentChild(node5, 1, node11), AST_NodeType(node11, "assignment"), AST_NodeField(node11, node12, "left"), AST_NodeType(node12, "element_reference"), AST_NodeField(node12, node13, "object"), AST_NodeType(node13, "element_reference"), AST_NodeField(node13, node14, "object"), AST_ParentChild(node13, 0, node15), AST_NodeType(node15, "["), AST_ParentChild(node13, 1, node16), AST_ParentChild(node13, 2, node17), AST_NodeType(node17, "]"), AST_ParentChild(node12, 0, node18), AST_NodeType(node18, "["), AST_ParentChild(node12, 1, node19), AST_ParentChild(node12, 2, node20), AST_NodeType(node20, "]"), AST_ParentChild(node11, 0, node21), AST_NodeType(node21, "="), AST_NodeField(node11, node22, "right"), AST_ParentChild(node5, 2, node23), AST_NodeType(node23, "end").
     303 +Rule("ruby_third_parties_airbrake", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Airbrake"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "merge_context"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     304 +Rule("ruby_third_parties_airbrake", node1) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "def"), AST_NodeField(node1, node3, "name"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "to_airbrake"), AST_ParentChild(node1, 1, node4), AST_ParentChild(node1, 2, node5), AST_NodeType(node5, "end").
     305 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Dir"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "["), AST_ParentChild(node1, 1, node4), AST_ParentChild(node1, 2, node5), AST_NodeType(node5, "]").
     306 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     307 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "IO"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     308 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Kernel"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "open"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     309 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "open"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     310 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "PStore"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     311 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Gem"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "::"), AST_NodeField(node2, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Util"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "."), AST_NodeField(node1, node7, "method"), AST_NodeField(node1, node8, "arguments"), AST_NodeType(node8, "argument_list"), AST_ParentChild(node8, 0, node9), AST_NodeType(node9, "("), AST_ParentChild(node8, 1, node10), AST_ParentChild(node8, 2, node11), AST_NodeType(node11, ")").
     312 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     313 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "+"), AST_NodeField(node1, node4, "right").
     314 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "/"), AST_NodeField(node1, node4, "right").
     315 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "cd"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     316 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "constant"), AST_NodeContent(node2, "Shell"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "new"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     317 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, "call"), !AST_NodeField(node2, _, "block"), (!AST_NodeField(node2, _, "arguments"); AST_NodeField(node2, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node2, node3, "receiver"), AST_NodeType(node3, "constant"), AST_NodeContent(node3, "Shell"), AST_ParentChild(node2, 0, node4), AST_NodeType(node4, "."), AST_NodeField(node2, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "default_system_path"), AST_ParentChild(node1, 0, node6), AST_NodeType(node6, "="), AST_NodeField(node1, node7, "right").
     318 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     319 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeField(node1, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "("), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, ")").
     320 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "["), AST_ParentChild(node1, 1, node4), AST_ParentChild(node1, 2, node5), AST_NodeType(node5, ","), AST_ParentChild(node1, 3, node6), AST_ParentChild(node1, 4, node7), AST_NodeType(node7, "]").
     321 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "transact"), AST_NodeField(node1, node5, "block"), AST_NodeType(node5, "do_block"), !AST_NodeField(node5, _, "parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "do"), AST_ParentChild(node5, 1, node7), AST_ParentChild(node5, 2, node8), AST_NodeType(node8, "end").
     322 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, ":"), AST_NodeField(node5, node7, "value"), AST_ParentChild(node3, 2, node8), AST_NodeType(node8, ")").
     323 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "{"), AST_ParentChild(node5, 1, node7), AST_NodeType(node7, "pair"), AST_NodeField(node7, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, ":"), AST_NodeField(node7, node9, "value"), AST_ParentChild(node5, 2, node10), AST_NodeType(node10, "}"), AST_ParentChild(node3, 2, node11), AST_NodeType(node11, ")").
     324 +Rule("ruby_lang_path_using_user_input", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "send_file"), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "("), AST_ParentChild(node3, 1, node5), AST_ParentChild(node3, 2, node6), AST_NodeType(node6, ")").
     325 +Rule("google_dataflow_description_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, "scope_resolution"), AST_NodeField(node2, node3, "scope"), AST_NodeType(node3, "scope_resolution"), AST_NodeField(node3, node4, "scope"), AST_NodeType(node4, "scope_resolution"), AST_NodeField(node4, node5, "scope"), AST_NodeType(node5, "scope_resolution"), AST_NodeField(node5, node6, "scope"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Google"), AST_ParentChild(node5, 0, node7), AST_NodeType(node7, "::"), AST_NodeField(node5, node8, "name"), AST_NodeType(node8, "constant"), AST_NodeContent(node8, "Cloud"), AST_ParentChild(node4, 0, node9), AST_NodeType(node9, "::"), AST_NodeField(node4, node10, "name"), AST_NodeType(node10, "constant"), AST_NodeContent(node10, "Dataflow"), AST_ParentChild(node3, 0, node11), AST_NodeType(node11, "::"), AST_NodeField(node3, node12, "name"), AST_ParentChild(node2, 0, node13), AST_NodeType(node13, "::"), AST_NodeField(node2, node14, "name"), AST_NodeType(node14, "constant"), AST_NodeContent(node14, "SnapshotJobRequest"), AST_ParentChild(node1, 0, node15), AST_NodeType(node15, "."), AST_NodeField(node1, node16, "method"), AST_NodeType(node16, "identifier"), AST_NodeContent(node16, "new").
     326 +Rule("google_dataflow_description_classes", node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), (!AST_NodeField(node1, _, "arguments"); AST_NodeField(node1, tmp0, "arguments"), !AST_ParentChild(tmp0, _, _)), AST_NodeField(node1, node2, "receiver"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "."), AST_NodeField(node1, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get_snapshot").
     327 + 
Please wait...
Page is in error, reload to recover