Projects STRLCPY bearer Commits 5aa06ab7
🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■
    cmd/compilerules/main.go
    skipped 8 lines
    9 9   "github.com/bearer/bearer/pkg/commands/process/settings"
    10 10   "github.com/bearer/bearer/pkg/flag"
    11 11   "github.com/bearer/bearer/pkg/util/souffle/compiler"
     12 + writerbase "github.com/bearer/bearer/pkg/util/souffle/writer/base"
    12 13   filewriter "github.com/bearer/bearer/pkg/util/souffle/writer/file"
    13 14   "golang.org/x/exp/slices"
    14 15  )
    skipped 22 lines
    37 38   writer := filewriter.New(ruleFile)
    38 39   
    39 40   for ruleName, rule := range config.BuiltInRules {
     41 + if !slices.Contains(rule.Languages, "ruby") {
     42 + continue
     43 + }
     44 + 
    40 45   if err := compileRuleToSouffle(language, writer, ruleName, rule); err != nil {
    41 46   return fmt.Errorf("built-in rule %s error: %w", ruleName, err)
    42 47   }
    43 48   }
    44 49   
    45 50   for ruleName, rule := range config.Rules {
     51 + if !slices.Contains(rule.Languages, "ruby") {
     52 + continue
     53 + }
     54 + 
    46 55   if err := compileRuleToSouffle(language, writer, ruleName, rule); err != nil {
    47 56   return fmt.Errorf("rule %s error: %w", ruleName, err)
    48 57   }
    skipped 9 lines
    58 67   ruleName string,
    59 68   rule *settings.Rule,
    60 69  ) error {
    61  - if !slices.Contains(rule.Languages, "ruby") {
    62  - return nil
     70 + ruleRelation := fmt.Sprintf("Rule_Pattern_%s", ruleName)
     71 + writer.WriteRelation(ruleRelation, "node: AST_NodeId")
     72 + 
     73 + variableRelation := fmt.Sprintf("Rule_PatternVariable_%s", ruleName)
     74 + // writer.WriteRelation(variableRelation, "node: AST_NodeId", "variable: Rule_VariableName", "variableNode: AST_NodeId")
     75 + 
     76 + if err := writer.WriteRule(
     77 + []writerbase.Predicate{writer.Predicate("Rule", writer.Symbol(ruleName), writer.Identifier("node"))},
     78 + []writerbase.Literal{writer.Predicate(ruleRelation, writer.Identifier("node"))},
     79 + ); err != nil {
     80 + return fmt.Errorf("error writing generic rule: %w", err)
    63 81   }
    64 82   
    65 83   for _, pattern := range rule.Patterns {
    66  - if err := language.WriteRule(ruleName, pattern.Pattern, writer); err != nil {
     84 + if err := language.WriteRule(ruleRelation, variableRelation, pattern.Pattern, writer); err != nil {
    67 85   return fmt.Errorf("pattern error (%s)': %w", pattern.Pattern, err)
    68 86   }
    69 87   }
    skipped 4 lines
  • ■ ■ ■ ■ ■ ■
    new/detector/composition/ruby/ruby.go
    skipped 15 lines
    16 16   "github.com/bearer/bearer/new/detector/implementation/ruby/property"
    17 17   "github.com/bearer/bearer/new/language"
    18 18   
     19 + "github.com/bearer/bearer/pkg/ast/languages/ruby"
    19 20   "github.com/bearer/bearer/pkg/classification"
    20 21   "github.com/bearer/bearer/pkg/commands/process/settings"
    21 22   "github.com/bearer/bearer/pkg/util/file"
    skipped 154 lines
    176 177   tree, err := composition.lang.Parse(string(fileContent))
    177 178   if err != nil {
    178 179   return nil, fmt.Errorf("failed to parse file %s", err)
     180 + }
     181 + 
     182 + queryContext, err := soufflequery.NewContext(
     183 + souffle,
     184 + ruby.New(),
     185 + implementation,
     186 + tree,
     187 + []byte(input),
     188 + )
     189 + if err != nil {
     190 + return err
    179 191   }
    180 192   
    181 193   evaluator := evaluator.New(composition.lang, composition.detectorSet, tree, file.FileInfo.Name())
    skipped 14 lines
  • ■ ■ ■ ■ ■
    new/language/base/base.go
    skipped 8 lines
    9 9  )
    10 10   
    11 11  type Language struct {
    12  - souffle bool
    13 12   implementation implementation.Implementation
     13 + souffle bool
    14 14  }
    15 15   
    16 16  func New(souffle bool, implementation implementation.Implementation) *Language {
    17 17   return &Language{souffle: souffle, implementation: implementation}
     18 +}
     19 + 
     20 +func (lang *Language) Implementation() implementation.Implementation {
     21 + return lang.implementation
    18 22  }
    19 23   
    20 24  func (lang *Language) Parse(input string) (*tree.Tree, error) {
    skipped 15 lines
    36 40   
    37 41  func (lang *Language) CompilePatternQuery(ruleName, input string) (types.PatternQuery, error) {
    38 42   if lang.souffle {
    39  - return soufflequery.Compile(lang.implementation, ruleName, input)
     43 + return soufflequery.NewQuery(ruleName), nil
    40 44   }
    41 45   
    42 46   return patternquery.Compile(lang, lang.implementation, input)
    skipped 2 lines
  • ■ ■ ■ ■ ■ ■
    new/language/tree/node.go
    skipped 10 lines
    11 11   
    12 12  type NodeID *sitter.Node
    13 13   
     14 +func (node *Node) SitterNode() *sitter.Node {
     15 + return node.sitterNode
     16 +}
     17 + 
    14 18  func (node *Node) Debug() string {
    15 19   return node.sitterNode.String()
    16 20  }
    skipped 35 lines
    52 56  }
    53 57   
    54 58  func (node *Node) Parent() *Node {
    55  - return node.tree.wrap(node.sitterNode.Parent())
     59 + return node.tree.Wrap(node.sitterNode.Parent())
    56 60  }
    57 61   
    58 62  func (node *Node) ChildCount() int {
    skipped 12 lines
    71 75  }
    72 76   
    73 77  func (node *Node) Child(i int) *Node {
    74  - return node.tree.wrap(node.sitterNode.Child(i))
     78 + return node.tree.Wrap(node.sitterNode.Child(i))
    75 79  }
    76 80   
    77 81  func (node *Node) NamedChild(i int) *Node {
    skipped 3 lines
    81 85   
    82 86   if child.IsNamed() {
    83 87   if count == i {
    84  - return node.tree.wrap(child)
     88 + return node.tree.Wrap(child)
    85 89   }
    86 90   
    87 91   count++
    skipped 26 lines
    114 118   }
    115 119   
    116 120   if child.IsNamed() {
    117  - if err := onChild(node.tree.wrap(child)); err != nil {
     121 + if err := onChild(node.tree.Wrap(child)); err != nil {
    118 122   return err
    119 123   }
    120 124   }
    skipped 20 lines
    141 145   }
    142 146   
    143 147   if k == i {
    144  - return node.tree.wrap(child)
     148 + return node.tree.Wrap(child)
    145 149   }
    146 150   
    147 151   k += 1
    skipped 3 lines
    151 155  }
    152 156   
    153 157  func (node *Node) ChildByFieldName(name string) *Node {
    154  - return node.tree.wrap(node.sitterNode.ChildByFieldName(name))
     158 + return node.tree.Wrap(node.sitterNode.ChildByFieldName(name))
    155 159  }
    156 160   
    157 161  func (node *Node) IsNamed() bool {
    skipped 34 lines
  • ■ ■ ■ ■
    new/language/tree/query.go
    skipped 62 lines
    63 63   
    64 64   result := make(QueryResult)
    65 65   for _, capture := range match.Captures {
    66  - result[query.sitterQuery.CaptureNameForId(capture.Index)] = tree.wrap(capture.Node)
     66 + result[query.sitterQuery.CaptureNameForId(capture.Index)] = tree.Wrap(capture.Node)
    67 67   }
    68 68   
    69 69   resultRoot, rootExists := result["root"]
    skipped 35 lines
  • ■ ■ ■ ■ ■ ■
    new/language/tree/tree.go
    skipped 34 lines
    35 35  }
    36 36   
    37 37  func (tree *Tree) RootNode() *Node {
    38  - return tree.wrap(tree.sitterTree.RootNode())
     38 + return tree.Wrap(tree.sitterTree.RootNode())
    39 39  }
    40 40   
    41 41  func (tree *Tree) Close() {
    42 42   tree.sitterTree.Close()
    43 43  }
    44 44   
    45  -func (tree *Tree) wrap(sitterNode *sitter.Node) *Node {
     45 +func (tree *Tree) Wrap(sitterNode *sitter.Node) *Node {
    46 46   if sitterNode == nil {
    47 47   return nil
    48 48   }
    skipped 25 lines
  • ■ ■ ■ ■ ■
    new/language/types/types.go
    1 1  package types
    2 2   
    3  -import "github.com/bearer/bearer/new/language/tree"
     3 +import (
     4 + "github.com/bearer/bearer/new/language/implementation"
     5 + "github.com/bearer/bearer/new/language/tree"
     6 +)
    4 7   
    5 8  type PatternQueryResult struct {
    6 9   MatchNode *tree.Node
    skipped 7 lines
    14 17  }
    15 18   
    16 19  type Language interface {
     20 + Implementation() implementation.Implementation
    17 21   Parse(input string) (*tree.Tree, error)
    18 22   CompileQuery(input string) (*tree.Query, error)
    19 23   CompilePatternQuery(ruleName, input string) (PatternQuery, error)
    skipped 2 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/idgenerator/idgenerator.go
    1 1  package idgenerator
    2 2   
     3 +import sitter "github.com/smacker/go-tree-sitter"
     4 + 
    3 5  type Generator struct {
    4 6   next uint32
    5 7  }
    6 8   
    7  -func New() *Generator {
     9 +func NewGenerator() *Generator {
    8 10   return &Generator{}
    9 11  }
    10 12   
    skipped 3 lines
    14 16   return next
    15 17  }
    16 18   
     19 +type NodeIdGenerator struct {
     20 + ids map[*sitter.Node]uint32
     21 + inverseIds map[uint32]*sitter.Node
     22 + idGenerator *Generator
     23 +}
     24 + 
     25 +func NewNodeIdGenerator() *NodeIdGenerator {
     26 + return &NodeIdGenerator{
     27 + ids: make(map[*sitter.Node]uint32),
     28 + inverseIds: make(map[uint32]*sitter.Node),
     29 + idGenerator: NewGenerator(),
     30 + }
     31 +}
     32 + 
     33 +func (generator *NodeIdGenerator) Get(node *sitter.Node) uint32 {
     34 + if id, cached := generator.ids[node]; cached {
     35 + return id
     36 + }
     37 + 
     38 + id := generator.idGenerator.Get()
     39 + generator.ids[node] = id
     40 + generator.inverseIds[id] = node
     41 + return id
     42 +}
     43 + 
     44 +func (generator *NodeIdGenerator) InverseLookup(nodeId uint32) *sitter.Node {
     45 + return generator.inverseIds[nodeId]
     46 +}
     47 + 
  • ■ ■ ■ ■ ■ ■
    pkg/ast/languages/ruby/common/common.go
    skipped 7 lines
    8 8  )
    9 9   
    10 10  var (
     11 + anonymousPatternNodeParentTypes = []string{"binary"}
     12 + 
    11 13   leafNodeTypes = []string{
    12 14   "identifier",
    13 15   "constant",
    skipped 88 lines
    102 104   return ""
    103 105  }
    104 106   
     107 +func IncludeNode(node *sitter.Node) bool {
     108 + parent := node.Parent()
     109 + if parent != nil {
     110 + return node.IsNamed() || slices.Contains(anonymousPatternNodeParentTypes, parent.Type())
     111 + }
     112 + 
     113 + return node.IsNamed()
     114 +}
     115 + 
  • ■ ■ ■ ■ ■
    pkg/ast/languages/ruby/patterns/patterns.go
    skipped 1 lines
    2 2   
    3 3  import (
    4 4   "fmt"
     5 + "log"
    5 6   
    6 7   sitter "github.com/smacker/go-tree-sitter"
    7 8   
    skipped 37 lines
    45 46  type patternWriter struct {
    46 47   *filewriter.Writer
    47 48   inputParams *builderinput.InputParams
    48  - ruleName string
    49 49   input []byte
    50 50   literals []writerbase.Literal
    51 51   childIndex uint32
    skipped 2 lines
    54 54   nodeVariableGenerator *nodeVariableGenerator
    55 55   tempIdGenerator *idgenerator.Generator
    56 56   handled set.Set[*sitter.Node]
     57 + variableNodes map[string][]writerbase.Identifier
    57 58  }
    58 59   
    59 60  func CompileRule(
    60 61   walker *walker.Walker,
    61 62   inputParams *builderinput.InputParams,
    62  - ruleName string,
     63 + ruleRelation,
     64 + variableRelation string,
    63 65   input []byte,
    64 66   rootNode *sitter.Node,
    65 67   writer *filewriter.Writer,
    skipped 1 lines
    67 69   w := &patternWriter{
    68 70   Writer: writer,
    69 71   inputParams: inputParams,
    70  - ruleName: ruleName,
    71 72   input: input,
    72 73   nodeVariableGenerator: newNodeVariableGenerator(),
    73 74   tempIdGenerator: idgenerator.New(),
    74 75   handled: set.New[*sitter.Node](),
     76 + variableNodes: make(map[string][]writerbase.Identifier),
    75 77   }
    76 78   
    77 79   err := walker.Walk(rootNode, w.visitNode)
    skipped 1 lines
    79 81   return err
    80 82   }
    81 83   
    82  - return writer.WriteRule(
    83  - writer.Predicate("Rule", writer.Symbol(w.ruleName), w.rootElement),
    84  - w.literals...,
    85  - )
     84 + var variablePredicates []writerbase.Predicate
     85 + for name, variables := range w.variableNodes {
     86 + for _, variable := range variables {
     87 + variablePredicates = append(variablePredicates, writer.Predicate(
     88 + variableRelation,
     89 + w.rootElement,
     90 + writer.Symbol(name),
     91 + variable,
     92 + ))
     93 + }
     94 + }
     95 + 
     96 + if len(w.literals) > 20 {
     97 + log.Printf("rule too large, skipping")
     98 + return nil
     99 + }
     100 + log.Printf("#literals: %d", len(w.literals))
     101 + 
     102 + if err := writer.WriteRule(
     103 + // append(
     104 + // []writerbase.Predicate(nil), //variablePredicates,
     105 + // writer.Predicate(ruleRelation, w.rootElement),
     106 + // ),
     107 + []writerbase.Predicate{writer.Predicate(ruleRelation, w.rootElement)},
     108 + w.literals,
     109 + ); err != nil {
     110 + return err
     111 + }
     112 + 
     113 + return nil
    86 114  }
    87 115   
    88 116  func (writer *patternWriter) visitNode(node *sitter.Node, visitChildren func() error) error {
    skipped 32 lines
    121 149   }
    122 150   
    123 151   if variable := writer.getVariableFor(node); variable != nil {
    124  - // TODO
     152 + if variable.Name != "_" {
     153 + writer.variableNodes[variable.Name] = append(writer.variableNodes[variable.Name], nodeElement)
     154 + }
     155 + 
     156 + writer.literals = append(
     157 + writer.literals,
     158 + writer.Predicate("AST_NodeType", nodeElement, writer.Any()),
     159 + )
     160 + 
    125 161   return nil
    126 162   }
    127 163   
    skipped 117 lines
  • ■ ■ ■ ■ ■ ■
    pkg/ast/languages/ruby/ruby.go
    skipped 9 lines
    10 10   "github.com/bearer/bearer/new/language/implementation"
    11 11   "github.com/bearer/bearer/new/language/implementation/ruby"
    12 12   builderinput "github.com/bearer/bearer/new/language/patternquery/builder/input"
     13 + "github.com/bearer/bearer/pkg/ast/idgenerator"
    13 14   "github.com/bearer/bearer/pkg/ast/languages/ruby/patterns"
    14 15   "github.com/bearer/bearer/pkg/ast/sourcefacts"
    15 16   "github.com/bearer/bearer/pkg/ast/walker"
    skipped 18 lines
    34 35  }
    35 36   
    36 37  func (language *Language) WriteSourceFacts(
    37  - fileId uint32,
    38 38   input []byte,
     39 + rootNode *sitter.Node,
     40 + nodeIdGenerator *idgenerator.NodeIdGenerator,
    39 41   writer writer.FactWriter,
    40 42  ) error {
    41  - rootNode, err := sitter.ParseCtx(context.TODO(), input, language.sitterLanguage)
    42  - if err != nil {
    43  - return fmt.Errorf("parse error: %w", err)
    44  - }
    45  - 
    46  - if err := sourcefacts.WriteFacts(
     43 + return sourcefacts.WriteFacts(
    47 44   language.walker,
    48  - fileId,
    49 45   input,
    50 46   rootNode,
     47 + nodeIdGenerator,
    51 48   writer,
    52  - ); err != nil {
    53  - return fmt.Errorf("translation error: %w", err)
    54  - }
    55  - 
    56  - return nil
     49 + )
    57 50  }
    58 51   
    59 52  func (language *Language) WriteRule(
    60  - ruleName string,
     53 + ruleRelation,
     54 + variableRelation string,
    61 55   input string,
    62 56   writer *filewriter.Writer,
    63 57  ) error {
    skipped 12 lines
    76 70   if err := patterns.CompileRule(
    77 71   language.walker,
    78 72   inputParams,
    79  - ruleName,
     73 + ruleRelation,
     74 + variableRelation,
    80 75   processedInputBytes,
    81 76   rootNode,
    82 77   writer,
    skipped 11 lines
  • ■ ■ ■ ■ ■
    pkg/ast/sourcefacts/sourcefacts.go
    skipped 11 lines
    12 12   
    13 13  type astWriter struct {
    14 14   writer.FactWriter
    15  - fileId uint32
    16 15   input []byte
    17  - nodeIdGenerator *nodeIdGenerator
    18  - parentNode writerbase.Element
     16 + nodeIdGenerator *idgenerator.NodeIdGenerator
    19 17   childIndex uint32
    20 18  }
    21 19   
    22  -type nodeIdGenerator struct {
    23  - ids map[*sitter.Node]uint32
    24  - idGenerator *idgenerator.Generator
    25  -}
    26  - 
    27  -func newNodeIdGenerator() *nodeIdGenerator {
    28  - return &nodeIdGenerator{
    29  - ids: make(map[*sitter.Node]uint32),
    30  - idGenerator: idgenerator.New(),
    31  - }
    32  -}
    33  - 
    34  -func (generator *nodeIdGenerator) Get(node *sitter.Node) uint32 {
    35  - if id, cached := generator.ids[node]; cached {
    36  - return id
    37  - }
    38  - 
    39  - id := generator.idGenerator.Get()
    40  - generator.ids[node] = id
    41  - return id
    42  -}
    43  - 
    44 20  func WriteFacts(
    45 21   walker *walker.Walker,
    46  - fileId uint32,
    47 22   input []byte,
    48 23   rootNode *sitter.Node,
     24 + nodeIdGenerator *idgenerator.NodeIdGenerator,
    49 25   writer writer.FactWriter,
    50 26  ) error {
    51 27   w := &astWriter{
    52 28   FactWriter: writer,
    53  - fileId: fileId,
    54 29   input: input,
    55  - nodeIdGenerator: newNodeIdGenerator(),
     30 + nodeIdGenerator: nodeIdGenerator,
    56 31   }
    57 32   
    58 33   return walker.Walk(rootNode, w.visitNode)
    skipped 54 lines
    113 88  }
    114 89   
    115 90  func (writer *astWriter) node(node *sitter.Node) writerbase.Element {
    116  - return writer.Record(
    117  - writer.Unsigned(writer.fileId),
    118  - writer.Unsigned(writer.nodeIdGenerator.Get(node)),
    119  - )
    120  -}
    121  - 
    122  -func nodeEqual(a, b *sitter.Node) bool {
    123  - if a == nil || b == nil {
    124  - return false
    125  - }
    126  - 
    127  - return a.Equal(b)
     91 + return writer.Unsigned(writer.nodeIdGenerator.Get(node))
    128 92  }
    129 93   
  • ■ ■ ■ ■ ■ ■
    pkg/ast/walker/walker.go
    1 1  package walker
    2 2   
    3 3  import (
     4 + "github.com/bearer/bearer/pkg/ast/languages/ruby/common"
    4 5   sitter "github.com/smacker/go-tree-sitter"
    5 6   "github.com/smacker/go-tree-sitter/ruby"
    6 7  )
    skipped 40 lines
    47 48   
    48 49   visitedChildren := false
    49 50   
    50  - if err := cursor.onVisit(node, func() error {
    51  - visitedChildren = true
    52  - return cursor.visitChildren(node)
    53  - }); err != nil {
    54  - return err
     51 + if common.IncludeNode(node) {
     52 + if err := cursor.onVisit(node, func() error {
     53 + visitedChildren = true
     54 + return cursor.visitChildren(node)
     55 + }); err != nil {
     56 + return err
     57 + }
    55 58   }
    56 59   
    57 60   if !visitedChildren {
    skipped 67 lines
  • ■ ■ ■ ■ ■ ■
    pkg/souffle/query/query.go
    1 1  package query
    2 2   
    3 3  import (
     4 + "errors"
     5 + "fmt"
     6 + 
    4 7   "github.com/bearer/bearer/new/language/implementation"
     8 + "github.com/bearer/bearer/new/language/tree"
     9 + languagetypes "github.com/bearer/bearer/new/language/types"
     10 + "github.com/bearer/bearer/pkg/ast/idgenerator"
     11 + "github.com/bearer/bearer/pkg/ast/languages/ruby"
     12 + "github.com/bearer/bearer/pkg/souffle/relationtypes"
     13 + "github.com/bearer/bearer/pkg/util/souffle"
     14 + relationwriter "github.com/bearer/bearer/pkg/util/souffle/writer/relation"
     15 + sitter "github.com/smacker/go-tree-sitter"
    5 16  )
    6 17   
     18 +type QueryContext struct {
     19 + souffle souffle.Souffle
     20 + language *ruby.Language
     21 + langImplementation implementation.Implementation
     22 + cache map[string]map[uint32][]*languagetypes.PatternQueryResult
     23 + nodeIdGenerator *idgenerator.NodeIdGenerator
     24 + tree *tree.Tree
     25 +}
     26 + 
    7 27  type Query struct {
     28 + context *QueryContext
    8 29   ruleName string
    9 30  }
    10 31   
    11  -func Compile(langImplementation implementation.Implementation, ruleName, input string) (*Query, error) {
    12  - return &Query{ruleName: ruleName}, nil
     32 +func NewContext(
     33 + souffle souffle.Souffle,
     34 + language *ruby.Language,
     35 + langImplementation implementation.Implementation,
     36 + tree *tree.Tree,
     37 + input []byte,
     38 +) (*QueryContext, error) {
     39 + context := &QueryContext{
     40 + souffle: souffle,
     41 + language: language,
     42 + langImplementation: langImplementation,
     43 + cache: make(map[string]map[uint32][]*languagetypes.PatternQueryResult),
     44 + nodeIdGenerator: idgenerator.NewNodeIdGenerator(),
     45 + tree: tree,
     46 + }
     47 + 
     48 + return context, context.run(tree.RootNode().SitterNode(), input)
     49 +}
     50 + 
     51 +func (context *QueryContext) NewQuery(ruleName string) *Query {
     52 + return &Query{context: context, ruleName: ruleName}
    13 53  }
    14 54   
     55 +func (context *QueryContext) get(node *tree.Node, ruleName string) []*languagetypes.PatternQueryResult {
     56 + nodeCache, ruleExists := context.cache[ruleName]
     57 + if !ruleExists {
     58 + return nil
     59 + }
     60 + 
     61 + return nodeCache[context.nodeIdGenerator.Get(node.SitterNode())]
     62 +}
     63 + 
     64 +func (context *QueryContext) put(nodeId uint32, ruleName string, result *languagetypes.PatternQueryResult) {
     65 + nodeCache, ruleExists := context.cache[ruleName]
     66 + if !ruleExists {
     67 + nodeCache = make(map[uint32][]*languagetypes.PatternQueryResult)
     68 + context.cache[ruleName] = nodeCache
     69 + }
     70 + 
     71 + nodeCache[nodeId] = append(nodeCache[nodeId], result)
     72 +}
     73 + 
     74 +func (context *QueryContext) run(rootNode *sitter.Node, input []byte) error {
     75 + // FIXME: this should go and we should write structs from sourcefacts
     76 + writer := relationwriter.New(context.souffle.Program())
     77 + 
     78 + if err := context.language.WriteSourceFacts(input, rootNode, context.nodeIdGenerator, writer); err != nil {
     79 + return fmt.Errorf("fact generation error: %w", err)
     80 + }
     81 + 
     82 + context.souffle.Run()
     83 + 
     84 + return context.readMatches()
     85 +}
     86 + 
     87 +func (context *QueryContext) readMatches() error {
     88 + relation, err := context.souffle.Relation("Rule_Match")
     89 + if err != nil {
     90 + return err
     91 + }
     92 + 
     93 + iterator := relation.NewIterator()
     94 + defer iterator.Close()
     95 + 
     96 + for i := 0; iterator.HasNext(); i++ {
     97 + var match relationtypes.Rule_Match
     98 + if err := context.souffle.Unmarshal(&match, iterator.GetNext()); err != nil {
     99 + return fmt.Errorf("failed to read tuple %d for Rule_Match: %w", i, err)
     100 + }
     101 + 
     102 + context.put(match.Node, match.RuleName, &languagetypes.PatternQueryResult{
     103 + MatchNode: context.tree.Wrap(context.nodeIdGenerator.InverseLookup(match.Node)),
     104 + Variables: make(map[string]*tree.Node),
     105 + })
     106 + }
     107 + 
     108 + return nil
     109 +}
     110 + 
     111 +func (query *Query) MatchAt(node *tree.Node) ([]*languagetypes.PatternQueryResult, error) {
     112 + return query.context.get(node, query.ruleName), nil
     113 +}
     114 + 
     115 +func (query *Query) MatchOnceAt(node *tree.Node) (*languagetypes.PatternQueryResult, error) {
     116 + results, err := query.MatchAt(node)
     117 + if err != nil {
     118 + return nil, err
     119 + }
     120 + 
     121 + if len(results) == 0 {
     122 + return nil, nil
     123 + }
     124 + if len(results) > 1 {
     125 + return nil, errors.New("query returned more than one result")
     126 + }
     127 + 
     128 + return results[0], nil
     129 +}
     130 + 
     131 +func (query *Query) Close() {}
     132 + 
  • ■ ■ ■ ■ ■ ■
    pkg/souffle/relationtypes/relationtypes.go
     1 +package relationtypes
     2 + 
     3 +/* This package defines Go types that map to Souffle relations and records.
     4 + * The order of fields must match the order in the Souffle definition.
     5 + */
     6 + 
     7 +type Rule_Match struct {
     8 + RuleName string
     9 + Node uint32
     10 + Location AST_Location
     11 +}
     12 + 
     13 +type AST_Location struct {
     14 + StartByte uint32
     15 + StartLine uint32
     16 + StartColumn uint32
     17 + EndLine uint32
     18 + EndColumn uint32
     19 +}
     20 + 
  • pkg/souffle/rules/generated.cpp
    Diff is too large to be displayed.
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/compiler/compiler.go
    1 1  package compiler
    2 2   
    3 3  import (
     4 + "bytes"
    4 5   "fmt"
     6 + "log"
    5 7   "os/exec"
     8 + "regexp"
    6 9  )
    7 10   
     11 +var logSplitPattern = regexp.MustCompile(`[\r\n]+`)
     12 + 
     13 +type debugLogWriter struct {
     14 + allOutput bytes.Buffer
     15 +}
     16 + 
     17 +func (writer *debugLogWriter) Write(data []byte) (int, error) {
     18 + writer.allOutput.Write(data)
     19 + 
     20 + return len(data), nil
     21 +}
     22 + 
    8 23  func Compile(inputFilename, outputFilename string) error {
    9  - cmd := exec.Command("souffle", "-g", outputFilename, inputFilename)
    10  - if err := cmd.Run(); err != nil {
     24 + log.Printf("running souffle")
     25 + cmd := exec.Command("souffle", "--verbose", "-g", outputFilename, inputFilename)
     26 + 
     27 + logWriter := &debugLogWriter{}
     28 + cmd.Stderr = logWriter
     29 + cmd.Stdout = logWriter
     30 + 
     31 + err := cmd.Run()
     32 + 
     33 + for _, line := range logSplitPattern.Split(logWriter.allOutput.String(), -1) {
     34 + log.Printf("[souffle] %s", line)
     35 + }
     36 + 
     37 + if err != nil {
    11 38   return fmt.Errorf("souffle compilation error: %w", err)
    12 39   }
    13 40   
    skipped 3 lines
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/souffle.go
    skipped 20 lines
    21 21   return &Souffle{program: program}, nil
    22 22  }
    23 23   
     24 +func (souffle *Souffle) Program() *binding.Program {
     25 + return souffle.program
     26 +}
     27 + 
     28 +func (souffle *Souffle) Run() {
     29 + souffle.program.Run()
     30 +}
     31 + 
     32 +func (souffle *Souffle) Relation(name string) (*binding.Relation, error) {
     33 + return souffle.program.Relation(name)
     34 +}
     35 + 
    24 36  func (souffle *Souffle) Marshal(relation *binding.Relation, value any) (*binding.Tuple, error) {
    25 37   fields, err := getFields(reflect.TypeOf(value))
    26 38   if err != nil {
    skipped 71 lines
    98 110   }
    99 111   
    100 112   return nil
     113 +}
     114 + 
     115 +func (souffle *Souffle) Close() {
     116 + souffle.program.Close()
    101 117  }
    102 118   
    103 119  func (souffle *Souffle) encodeRecord(value reflect.Value) (int32, error) {
    skipped 90 lines
  • ■ ■ ■ ■ ■ ■
    pkg/util/souffle/writer/file/file.go
    skipped 39 lines
    40 40   return base.NegativePredicate(base.Predicate{Name: name, Elements: elements})
    41 41  }
    42 42   
    43  -func (writer *Writer) WriteRule(head base.Predicate, body ...base.Literal) error {
     43 +// FIXME: use proper attribute type
     44 +func (writer *Writer) WriteRelation(name string, attributes ...string) error {
     45 + builder := strings.Builder{}
     46 + builder.WriteString(".decl ")
     47 + builder.WriteString(name)
     48 + builder.WriteString("(")
     49 + 
     50 + for i, attribute := range attributes {
     51 + if i != 0 {
     52 + builder.WriteString(", ")
     53 + }
     54 + 
     55 + builder.WriteString(attribute)
     56 + }
     57 + 
     58 + builder.WriteString(")\n")
     59 + 
     60 + return writer.write(builder.String())
     61 +}
     62 + 
     63 +func (writer *Writer) WriteRule(heads []base.Predicate, body []base.Literal) error {
    44 64   builder := strings.Builder{}
    45 65   
    46  - builder.WriteString(head.String())
     66 + for i, head := range heads {
     67 + if i != 0 {
     68 + builder.WriteString(", ")
     69 + }
     70 + 
     71 + builder.WriteString(head.String())
     72 + }
     73 + 
    47 74   builder.WriteString(" :- ")
    48 75   builder.WriteString(writer.Conjunction(body...).String())
    49 76   builder.WriteString(".\n")
    skipped 29 lines
  • ■ ■ ■ ■
    pkg/util/souffle/writer/relation/relation.go
    1 1  package relationwriter
    2 2   
    3 3  import (
    4  - "github.com/bearer/bearer/pkg/souffle/binding"
     4 + "github.com/bearer/bearer/pkg/util/souffle/binding"
    5 5   "github.com/bearer/bearer/pkg/util/souffle/writer/base"
    6 6  )
    7 7   
    skipped 60 lines
  • ■ ■ ■ ■ ■ ■
    souffle/ast.dl
    skipped 2 lines
    3 3  .type AST_FilePosition <: number
    4 4   
    5 5  .type AST_NodeId <: number
    6  -.type AST_Node = [file: AST_FileId, nodeId: AST_NodeId]
    7 6   
    8 7  .type AST_Type <: symbol
    9 8  .type AST_Field <: symbol
    skipped 10 lines
    20 19  .decl AST_File(file: AST_FileId, filename: AST_Filename)
    21 20  .input AST_File
    22 21   
    23  -.decl AST_NodeType(node: AST_Node, type: AST_Type)
     22 +.decl AST_NodeType(node: AST_NodeId, type: AST_Type)
    24 23  .input AST_NodeType
    25  -.decl AST_NodeContent(node: AST_Node, content: AST_Content)
     24 +.decl AST_NodeContent(node: AST_NodeId, content: AST_Content)
    26 25  .input AST_NodeContent
    27 26   
    28  -.decl AST_NodeField(parent: AST_Node, child: AST_Node, field: AST_Field)
     27 +.decl AST_NodeField(parent: AST_NodeId, child: AST_NodeId, field: AST_Field)
    29 28  .input AST_NodeField
    30  -.decl AST_ParentChild(parent: AST_Node, index: unsigned, child: AST_Node)
     29 +.decl AST_ParentChild(parent: AST_NodeId, index: unsigned, child: AST_NodeId)
    31 30  .input AST_ParentChild
    32 31   
    33  -.decl AST_NodeLocation(node: AST_Node, location: AST_Location)
     32 +.decl AST_NodeLocation(node: AST_NodeId, location: AST_Location)
    34 33  .input AST_NodeLocation
    35 34   
  • ■ ■ ■ ■ ■ ■
    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").
     1 +.decl Rule_Pattern_ruby_lang_ftp_using_user_input(node: AST_NodeId)
     2 +Rule("ruby_lang_ftp_using_user_input", node) :- Rule_Pattern_ruby_lang_ftp_using_user_input(node).
     3 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     4 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     5 +Rule_Pattern_ruby_lang_ftp_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     6 +.decl Rule_Pattern_ruby_lang_eval_using_user_input_user_input(node: AST_NodeId)
     7 +Rule("ruby_lang_eval_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_eval_using_user_input_user_input(node).
     8 +Rule_Pattern_ruby_lang_eval_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     9 +Rule_Pattern_ruby_lang_eval_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     10 +Rule_Pattern_ruby_lang_eval_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     11 +Rule_Pattern_ruby_lang_eval_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     12 +.decl Rule_Pattern_ruby_lang_reflection_using_user_input(node: AST_NodeId)
     13 +Rule("ruby_lang_reflection_using_user_input", node) :- Rule_Pattern_ruby_lang_reflection_using_user_input(node).
     14 +Rule_Pattern_ruby_lang_reflection_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     15 +Rule_Pattern_ruby_lang_reflection_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     16 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     17 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "to_proc").
     18 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "block_argument"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     19 +Rule_Pattern_ruby_lang_reflection_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "block_argument"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     20 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     21 +.decl Rule_Pattern_ruby_third_parties_algolia_index(node: AST_NodeId)
     22 +Rule("ruby_third_parties_algolia_index", node) :- Rule_Pattern_ruby_third_parties_algolia_index(node).
     23 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "init_index").
     24 +.decl Rule_Pattern_ruby_rails_session_key_using_user_input(node: AST_NodeId)
     25 +Rule("ruby_rails_session_key_using_user_input", node) :- Rule_Pattern_ruby_rails_session_key_using_user_input(node).
     26 +Rule_Pattern_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, _).
     27 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_net_http_new(node: AST_NodeId)
     28 +Rule("ruby_lang_http_url_using_user_input_net_http_new", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_net_http_new(node).
     29 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     30 +.decl Rule_Pattern_ruby_lang_eval_using_user_input(node: AST_NodeId)
     31 +Rule("ruby_lang_eval_using_user_input", node) :- Rule_Pattern_ruby_lang_eval_using_user_input(node).
     32 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "InstructionSequence"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "compile"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     33 +Rule_Pattern_ruby_lang_eval_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     34 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     35 +.decl Rule_Pattern_ruby_third_parties_segment(node: AST_NodeId)
     36 +Rule("ruby_third_parties_segment", node) :- Rule_Pattern_ruby_third_parties_segment(node).
     37 +Rule_Pattern_ruby_third_parties_segment(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     38 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(node: AST_NodeId)
     39 +Rule("ruby_lang_http_url_using_user_input_net_http", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(node).
     40 +Rule_Pattern_ruby_lang_http_url_using_user_input_net_http(node1) :- AST_NodeType(node1, _).
     41 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "start"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     42 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "start").
     43 +.decl Rule_Pattern_ruby_third_parties_open_telemetry(node: AST_NodeId)
     44 +Rule("ruby_third_parties_open_telemetry", node) :- Rule_Pattern_ruby_third_parties_open_telemetry(node).
     45 +Rule_Pattern_ruby_third_parties_open_telemetry(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     46 +Rule_Pattern_ruby_third_parties_open_telemetry(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "in_span"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     47 +.decl Rule_Pattern_open_telemetry_current_span(node: AST_NodeId)
     48 +Rule("open_telemetry_current_span", node) :- Rule_Pattern_open_telemetry_current_span(node).
     49 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Trace"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "current_span").
     50 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "in_span"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     51 +.decl Rule_Pattern_ruby_lang_exception(node: AST_NodeId)
     52 +Rule("ruby_lang_exception", node) :- Rule_Pattern_ruby_lang_exception(node).
     53 +Rule_Pattern_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, _).
     54 +.decl Rule_Pattern_ruby_rails_logger(node: AST_NodeId)
     55 +Rule("ruby_rails_logger", node) :- Rule_Pattern_ruby_rails_logger(node).
     56 +Rule_Pattern_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_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "logger"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     57 +.decl Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(node: AST_NodeId)
     58 +Rule("ruby_lang_deserialization_of_user_input_user_input", node) :- Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(node).
     59 +Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     60 +Rule_Pattern_ruby_lang_deserialization_of_user_input_user_input(node1) :- AST_NodeType(node1, _).
     61 +.decl Rule_Pattern_ruby_third_parties_bigquery(node: AST_NodeId)
     62 +Rule("ruby_third_parties_bigquery", node) :- Rule_Pattern_ruby_third_parties_bigquery(node).
     63 +Rule_Pattern_ruby_third_parties_bigquery(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     64 +.decl Rule_Pattern_ruby_third_parties_bigquery_dataset(node: AST_NodeId)
     65 +Rule("ruby_third_parties_bigquery_dataset", node) :- Rule_Pattern_ruby_third_parties_bigquery_dataset(node).
     66 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "dataset").
     67 +.decl Rule_Pattern_ruby_third_parties_clickhouse(node: AST_NodeId)
     68 +Rule("ruby_third_parties_clickhouse", node) :- Rule_Pattern_ruby_third_parties_clickhouse(node).
     69 +Rule_Pattern_ruby_third_parties_clickhouse(node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     70 +.decl Rule_Pattern_ruby_lang_file_generation_file(node: AST_NodeId)
     71 +Rule("ruby_lang_file_generation_file", node) :- Rule_Pattern_ruby_lang_file_generation_file(node).
     72 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "generate").
     73 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "generate"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     74 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
     75 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     76 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
     77 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     78 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open").
     79 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     80 +.decl Rule_Pattern_ruby_lang_cookies(node: AST_NodeId)
     81 +Rule("ruby_lang_cookies", node) :- Rule_Pattern_ruby_lang_cookies(node).
     82 +Rule_Pattern_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_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     83 +Rule_Pattern_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_NodeField(node3, node5, "method"), AST_NodeType(node5, _), AST_ParentChild(node2, 0, node6), AST_NodeType(node6, _), AST_NodeField(node1, node7, "right"), AST_NodeType(node7, _).
     84 +.decl Rule_Pattern_google_dataflow_value_classes(node: AST_NodeId)
     85 +Rule("google_dataflow_value_classes", node) :- Rule_Pattern_google_dataflow_value_classes(node).
     86 +.decl Rule_Pattern_ruby_lang_exec_using_user_input(node: AST_NodeId)
     87 +Rule("ruby_lang_exec_using_user_input", node) :- Rule_Pattern_ruby_lang_exec_using_user_input(node).
     88 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     89 +Rule_Pattern_ruby_lang_exec_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     90 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "popen"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     91 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     92 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     93 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Util"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     94 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "spawn"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     95 +Rule_Pattern_ruby_lang_exec_using_user_input(node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, _).
     96 +Rule_Pattern_ruby_lang_exec_using_user_input(node1) :- AST_NodeType(node1, "subshell"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "string_content"), AST_NodeContent(node2, "{CurioVar0").
     97 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     98 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     99 +Rule_Pattern_ruby_lang_exec_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "system"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     100 +.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_blowfish_init(node: AST_NodeId)
     101 +Rule("ruby_lang_weak_encryption_with_data_blowfish_init", node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_blowfish_init(node).
     102 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Blowfish"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     103 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_path_hash(node: AST_NodeId)
     104 +Rule("ruby_lang_http_url_using_user_input_path_hash", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_path_hash(node).
     105 +Rule_Pattern_ruby_lang_http_url_using_user_input_path_hash(node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     106 +.decl Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(node: AST_NodeId)
     107 +Rule("ruby_lang_reflection_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(node).
     108 +Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     109 +Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     110 +Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     111 +Rule_Pattern_ruby_lang_reflection_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     112 +.decl Rule_Pattern_ruby_rails_render_using_user_input(node: AST_NodeId)
     113 +Rule("ruby_rails_render_using_user_input", node) :- Rule_Pattern_ruby_rails_render_using_user_input(node).
     114 +Rule_Pattern_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, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":inline"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "inline")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     115 +Rule_Pattern_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, "pair"), AST_NodeField(node4, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":html"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "html")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     116 +.decl Rule_Pattern_ruby_lang_path_using_user_input_pathname(node: AST_NodeId)
     117 +Rule("ruby_lang_path_using_user_input_pathname", node) :- Rule_Pattern_ruby_lang_path_using_user_input_pathname(node).
     118 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "root").
     119 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     120 +.decl Rule_Pattern_google_dataflow_config(node: AST_NodeId)
     121 +Rule("google_dataflow_config", node) :- Rule_Pattern_google_dataflow_config(node).
     122 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "configure").
     123 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "configure"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "block"), AST_NodeField(node4, node5, "parameters"), AST_NodeType(node5, "block_parameters"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     124 +.decl Rule_Pattern_ruby_lang_exec_using_user_input_shell_cmd_proc(node: AST_NodeId)
     125 +Rule("ruby_lang_exec_using_user_input_shell_cmd_proc", node) :- Rule_Pattern_ruby_lang_exec_using_user_input_shell_cmd_proc(node).
     126 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "command_processor").
     127 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     128 +.decl Rule_Pattern_google_dataflow_message_text_classes(node: AST_NodeId)
     129 +Rule("google_dataflow_message_text_classes", node) :- Rule_Pattern_google_dataflow_message_text_classes(node).
     130 +.decl Rule_Pattern_ruby_lang_http_post_insecure_with_data(node: AST_NodeId)
     131 +Rule("ruby_lang_http_post_insecure_with_data", node) :- Rule_Pattern_ruby_lang_http_post_insecure_with_data(node).
     132 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "post_form"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, _).
     133 +Rule_Pattern_ruby_lang_http_post_insecure_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     134 +.decl Rule_Pattern_ruby_third_parties_algolia_client(node: AST_NodeId)
     135 +Rule("ruby_third_parties_algolia_client", node) :- Rule_Pattern_ruby_third_parties_algolia_client(node).
     136 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Search"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Client"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "create").
     137 +.decl Rule_Pattern_ruby_rails_render_using_user_input_user_input(node: AST_NodeId)
     138 +Rule("ruby_rails_render_using_user_input_user_input", node) :- Rule_Pattern_ruby_rails_render_using_user_input_user_input(node).
     139 +Rule_Pattern_ruby_rails_render_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     140 +Rule_Pattern_ruby_rails_render_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     141 +Rule_Pattern_ruby_rails_render_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     142 +.decl Rule_Pattern_ruby_third_parties_airbrake(node: AST_NodeId)
     143 +Rule("ruby_third_parties_airbrake", node) :- Rule_Pattern_ruby_third_parties_airbrake(node).
     144 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     145 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "merge_context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     146 +Rule_Pattern_ruby_third_parties_airbrake(node1) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "to_airbrake"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
     147 +.decl Rule_Pattern_ruby_third_parties_google_dataflow(node: AST_NodeId)
     148 +Rule("ruby_third_parties_google_dataflow", node) :- Rule_Pattern_ruby_third_parties_google_dataflow(node).
     149 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "message_text"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     150 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "description"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     151 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "value"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     152 +Rule_Pattern_ruby_third_parties_google_dataflow(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "create_job_from_template"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     153 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, _), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     154 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "metadata"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     155 +.decl Rule_Pattern_ruby_third_parties_rollbar_scope(node: AST_NodeId)
     156 +Rule("ruby_third_parties_rollbar_scope", node) :- Rule_Pattern_ruby_third_parties_rollbar_scope(node).
     157 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scope").
     158 +.decl Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_trans_user_input(node: AST_NodeId)
     159 +Rule("ruby_lang_path_using_user_input_shell_cmd_trans_user_input", node) :- Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_trans_user_input(node).
     160 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     161 +.decl Rule_Pattern_ruby_lang_deserialization_of_user_input_sanitized_user_input(node: AST_NodeId)
     162 +Rule("ruby_lang_deserialization_of_user_input_sanitized_user_input", node) :- Rule_Pattern_ruby_lang_deserialization_of_user_input_sanitized_user_input(node).
     163 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "parse").
     164 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "XML").
     165 +.decl Rule_Pattern_segment_init(node: AST_NodeId)
     166 +Rule("segment_init", node) :- Rule_Pattern_segment_init(node).
     167 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Analytics"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     168 +.decl Rule_Pattern_ruby_third_parties_bugsnag(node: AST_NodeId)
     169 +Rule("ruby_third_parties_bugsnag", node) :- Rule_Pattern_ruby_third_parties_bugsnag(node).
     170 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "leave_breadcrumb"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     171 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "notify"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     172 +.decl Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_proc(node: AST_NodeId)
     173 +Rule("ruby_lang_path_using_user_input_shell_cmd_proc", node) :- Rule_Pattern_ruby_lang_path_using_user_input_shell_cmd_proc(node).
     174 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "command_processor").
     175 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "CommandProcessor"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     176 +.decl Rule_Pattern_ruby_third_parties_algolia(node: AST_NodeId)
     177 +Rule("ruby_third_parties_algolia", node) :- Rule_Pattern_ruby_third_parties_algolia(node).
     178 +Rule_Pattern_ruby_third_parties_algolia(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     179 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input(node: AST_NodeId)
     180 +Rule("ruby_lang_http_url_using_user_input", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input(node).
     181 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     182 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     183 +Rule_Pattern_ruby_lang_http_url_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     184 +Rule_Pattern_ruby_lang_http_url_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "send_request"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     185 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "ipaddr"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     186 +Rule_Pattern_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, _).
     187 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "http"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     188 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     189 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     190 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "url"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     191 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     192 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     193 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Connection"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     194 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     195 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     196 +Rule_Pattern_ruby_lang_http_url_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":path"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "path")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     197 +Rule_Pattern_ruby_lang_http_url_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "requests"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     198 +Rule_Pattern_ruby_lang_http_url_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     199 +Rule_Pattern_ruby_lang_http_url_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     200 +.decl Rule_Pattern_openssl_dsa_init(node: AST_NodeId)
     201 +Rule("openssl_dsa_init", node) :- Rule_Pattern_openssl_dsa_init(node).
     202 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "DSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     203 +.decl Rule_Pattern_google_dataflow_template_metadata_init(node: AST_NodeId)
     204 +Rule("google_dataflow_template_metadata_init", node) :- Rule_Pattern_google_dataflow_template_metadata_init(node).
     205 +.decl Rule_Pattern_ruby_third_parties_rollbar(node: AST_NodeId)
     206 +Rule("ruby_third_parties_rollbar", node) :- Rule_Pattern_ruby_third_parties_rollbar(node).
     207 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "rollbar_context"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     208 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     209 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "log"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     210 +Rule_Pattern_ruby_third_parties_rollbar(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scope"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     211 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "scoped"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     212 +.decl Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(node: AST_NodeId)
     213 +Rule("ruby_lang_ftp_using_user_input_ftp", node) :- Rule_Pattern_ruby_lang_ftp_using_user_input_ftp(node).
     214 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     215 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open").
     216 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "block"), AST_NodeField(node6, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, _).
     217 +.decl Rule_Pattern_google_dataflow_description_classes(node: AST_NodeId)
     218 +Rule("google_dataflow_description_classes", node) :- Rule_Pattern_google_dataflow_description_classes(node).
     219 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get_snapshot").
     220 +.decl Rule_Pattern_ruby_lang_logger(node: AST_NodeId)
     221 +Rule("ruby_lang_logger", node) :- Rule_Pattern_ruby_lang_logger(node).
     222 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     223 +.decl Rule_Pattern_ruby_third_parties_elasticsearch_client(node: AST_NodeId)
     224 +Rule("ruby_third_parties_elasticsearch_client", node) :- Rule_Pattern_ruby_third_parties_elasticsearch_client(node).
     225 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Client"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     226 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Client"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     227 +.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_dsa_init(node: AST_NodeId)
     228 +Rule("ruby_lang_weak_encryption_with_data_openssl_dsa_init", node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_dsa_init(node).
     229 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "DSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     230 +.decl Rule_Pattern_ruby_rails_redirect_to_user_input(node: AST_NodeId)
     231 +Rule("ruby_rails_redirect_to_user_input", node) :- Rule_Pattern_ruby_rails_redirect_to_user_input(node).
     232 +Rule_Pattern_ruby_rails_redirect_to_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     233 +Rule_Pattern_ruby_rails_redirect_to_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     234 +Rule_Pattern_ruby_rails_redirect_to_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     235 +.decl Rule_Pattern_openssl_rsa_init(node: AST_NodeId)
     236 +Rule("openssl_rsa_init", node) :- Rule_Pattern_openssl_rsa_init(node).
     237 +.decl Rule_Pattern_ruby_lang_weak_encryption_with_data(node: AST_NodeId)
     238 +Rule("ruby_lang_weak_encryption_with_data", node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data(node).
     239 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "SHA1"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexidigest"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     240 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "MD5"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexdigest"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     241 +Rule_Pattern_ruby_lang_weak_encryption_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     242 +Rule_Pattern_ruby_lang_weak_encryption_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     243 +Rule_Pattern_ruby_lang_weak_encryption_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     244 +Rule_Pattern_ruby_lang_weak_encryption_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     245 +Rule_Pattern_ruby_lang_weak_encryption_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     246 +Rule_Pattern_ruby_lang_weak_encryption_with_data(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     247 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     248 +.decl Rule_Pattern_ruby_rails_session(node: AST_NodeId)
     249 +Rule("ruby_rails_session", node) :- Rule_Pattern_ruby_rails_session(node).
     250 +Rule_Pattern_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_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     251 +.decl Rule_Pattern_ruby_third_parties_sentry(node: AST_NodeId)
     252 +Rule("ruby_third_parties_sentry", node) :- Rule_Pattern_ruby_third_parties_sentry(node).
     253 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Breadcrumb"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     254 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "capture_message"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     255 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     256 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_extras"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     257 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_tags"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     258 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_user"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     259 +.decl Rule_Pattern_ruby_lang_exec_using_user_input_user_input(node: AST_NodeId)
     260 +Rule("ruby_lang_exec_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_exec_using_user_input_user_input(node).
     261 +Rule_Pattern_ruby_lang_exec_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     262 +Rule_Pattern_ruby_lang_exec_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     263 +Rule_Pattern_ruby_lang_exec_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     264 +Rule_Pattern_ruby_lang_exec_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     265 +.decl Rule_Pattern_ruby_lang_weak_encryption(node: AST_NodeId)
     266 +Rule("ruby_lang_weak_encryption", node) :- Rule_Pattern_ruby_lang_weak_encryption(node).
     267 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "SHA1"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexidigest").
     268 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "MD5"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "hexdigest").
     269 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     270 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     271 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     272 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     273 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _).
     274 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     275 +.decl Rule_Pattern_ruby_third_parties_datadog_span(node: AST_NodeId)
     276 +Rule("ruby_third_parties_datadog_span", node) :- Rule_Pattern_ruby_third_parties_datadog_span(node).
     277 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "active_span").
     278 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "trace"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "block"), AST_NodeField(node6, node7, "parameters"), AST_NodeType(node7, "block_parameters"), AST_ParentChild(node7, 0, node8), AST_NodeType(node8, _).
     279 +.decl Rule_Pattern_ruby_lang_http_get_params(node: AST_NodeId)
     280 +Rule("ruby_lang_http_get_params", node) :- Rule_Pattern_ruby_lang_http_get_params(node).
     281 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "encode_www_form"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     282 +Rule_Pattern_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, _).
     283 +Rule_Pattern_ruby_lang_http_get_params(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     284 +.decl Rule_Pattern_rc4_init(node: AST_NodeId)
     285 +Rule("rc4_init", node) :- Rule_Pattern_rc4_init(node).
     286 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     287 +.decl Rule_Pattern_ruby_rails_insecure_http_password(node: AST_NodeId)
     288 +Rule("ruby_rails_insecure_http_password", node) :- Rule_Pattern_ruby_rails_insecure_http_password(node).
     289 +.decl Rule_Pattern_ruby_lang_http_insecure_url_hash(node: AST_NodeId)
     290 +Rule("ruby_lang_http_insecure_url_hash", node) :- Rule_Pattern_ruby_lang_http_insecure_url_hash(node).
     291 +Rule_Pattern_ruby_lang_http_insecure_url_hash(node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     292 +.decl Rule_Pattern_ruby_lang_regex_using_user_input_user_input(node: AST_NodeId)
     293 +Rule("ruby_lang_regex_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_regex_using_user_input_user_input(node).
     294 +Rule_Pattern_ruby_lang_regex_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     295 +Rule_Pattern_ruby_lang_regex_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     296 +Rule_Pattern_ruby_lang_regex_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     297 +Rule_Pattern_ruby_lang_regex_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     298 +.decl Rule_Pattern_ruby_rails_default_encryption(node: AST_NodeId)
     299 +Rule("ruby_rails_default_encryption", node) :- Rule_Pattern_ruby_rails_default_encryption(node).
     300 +Rule_Pattern_ruby_rails_default_encryption(node1) :- AST_NodeType(node1, "class"), !AST_NodeField(node1, _, "superclass"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, "call"), !AST_NodeField(node3, _, "receiver"), !AST_NodeField(node3, _, "block"), AST_NodeField(node3, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "encrypts"), AST_NodeField(node3, node5, "arguments"), AST_NodeType(node5, "argument_list"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, _).
     301 +.decl Rule_Pattern_ruby_lang_jwt(node: AST_NodeId)
     302 +Rule("ruby_lang_jwt", node) :- Rule_Pattern_ruby_lang_jwt(node).
     303 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "encode"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     304 +.decl Rule_Pattern_ruby_lang_http_insecure(node: AST_NodeId)
     305 +Rule("ruby_lang_http_insecure", node) :- Rule_Pattern_ruby_lang_http_insecure(node).
     306 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     307 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "HTTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     308 +Rule_Pattern_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, _).
     309 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "http"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     310 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     311 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     312 +Rule_Pattern_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_NodeType(node3, _), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "url"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     313 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     314 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Multi"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     315 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     316 +Rule_Pattern_ruby_lang_http_insecure(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "get"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     317 +Rule_Pattern_ruby_lang_http_insecure(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "post"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     318 +.decl Rule_Pattern_ruby_lang_file_generation(node: AST_NodeId)
     319 +Rule("ruby_lang_file_generation", node) :- Rule_Pattern_ruby_lang_file_generation(node).
     320 +Rule_Pattern_ruby_lang_file_generation(node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "<<"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     321 +Rule_Pattern_ruby_lang_file_generation(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     322 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_curb(node: AST_NodeId)
     323 +Rule("ruby_lang_http_url_using_user_input_curb", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_curb(node).
     324 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     325 +.decl Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(node: AST_NodeId)
     326 +Rule("ruby_rails_session_key_using_user_input_user_input", node) :- Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(node).
     327 +Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     328 +Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     329 +Rule_Pattern_ruby_rails_session_key_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     330 +.decl Rule_Pattern_ruby_third_parties_bigquery_insert_async(node: AST_NodeId)
     331 +Rule("ruby_third_parties_bigquery_insert_async", node) :- Rule_Pattern_ruby_third_parties_bigquery_insert_async(node).
     332 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
     333 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
     334 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "insert_async").
     335 +.decl Rule_Pattern_ruby_third_parties_new_relic(node: AST_NodeId)
     336 +Rule("ruby_third_parties_new_relic", node) :- Rule_Pattern_ruby_third_parties_new_relic(node).
     337 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_custom_attributes"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     338 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_custom_parameters"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     339 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Agent"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "notice_error"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     340 +.decl Rule_Pattern_ruby_lang_hardcoded_secret(node: AST_NodeId)
     341 +Rule("ruby_lang_hardcoded_secret", node) :- Rule_Pattern_ruby_lang_hardcoded_secret(node).
     342 +Rule_Pattern_ruby_lang_hardcoded_secret(node1) :- AST_NodeType(node1, "assignment"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "right"), AST_NodeType(node3, _).
     343 +Rule_Pattern_ruby_lang_hardcoded_secret(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), 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, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     344 +Rule_Pattern_ruby_lang_hardcoded_secret(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "receiver"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "pair"), AST_NodeField(node4, node5, "key"), AST_NodeType(node5, _), AST_NodeField(node4, node6, "value"), AST_NodeType(node6, _).
     345 +Rule_Pattern_ruby_lang_hardcoded_secret(node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":CurioVar0"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar0")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     346 +Rule_Pattern_ruby_lang_hardcoded_secret(node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, node3, "key"), AST_NodeType(node3, _), AST_NodeField(node2, node4, "value"), AST_NodeType(node4, _).
     347 +.decl Rule_Pattern_ruby_lang_insecure_ftp(node: AST_NodeId)
     348 +Rule("ruby_lang_insecure_ftp", node) :- Rule_Pattern_ruby_lang_insecure_ftp(node).
     349 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     350 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open"), AST_NodeField(node1, node6, "block"), AST_NodeType(node6, "do_block"), !AST_NodeField(node6, _, "parameters"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     351 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "FTP"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "open").
     352 +.decl Rule_Pattern_ruby_rails_insecure_smtp(node: AST_NodeId)
     353 +Rule("ruby_rails_insecure_smtp", node) :- Rule_Pattern_ruby_rails_insecure_smtp(node).
     354 +.decl Rule_Pattern_ruby_lang_regex_using_user_input(node: AST_NodeId)
     355 +Rule("ruby_lang_regex_using_user_input", node) :- Rule_Pattern_ruby_lang_regex_using_user_input(node).
     356 +Rule_Pattern_ruby_lang_regex_using_user_input(node1) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "interpolation"), AST_ParentChild(node2, 0, node3), AST_NodeType(node3, _).
     357 +Rule_Pattern_ruby_lang_regex_using_user_input(node1) :- AST_NodeType(node1, "regex"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "interpolation"), AST_ParentChild(node2, 0, node3), AST_NodeType(node3, _).
     358 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     359 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_excon(node: AST_NodeId)
     360 +Rule("ruby_lang_http_url_using_user_input_excon", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_excon(node).
     361 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     362 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Connection"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     363 +.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_rsa_init(node: AST_NodeId)
     364 +Rule("ruby_lang_weak_encryption_with_data_openssl_rsa_init", node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_openssl_rsa_init(node).
     365 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "PKey"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "RSA"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     366 +.decl Rule_Pattern_ruby_rails_redirect_to(node: AST_NodeId)
     367 +Rule("ruby_rails_redirect_to", node) :- Rule_Pattern_ruby_rails_redirect_to(node).
     368 +Rule_Pattern_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, _).
     369 +.decl Rule_Pattern_ruby_rails_permissive_regex_validation(node: AST_NodeId)
     370 +Rule("ruby_rails_permissive_regex_validation", node) :- Rule_Pattern_ruby_rails_permissive_regex_validation(node).
     371 +Rule_Pattern_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_NodeField(node4, node5, "value"), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "pair"), AST_NodeField(node6, tmp1, "key"), (AST_NodeType(tmp1, "simple_symbol"), AST_NodeContent(tmp1, ":with"); AST_NodeType(tmp1, "hash_key_symbol"), AST_NodeContent(tmp1, "with")), AST_NodeField(node6, node7, "value"), AST_NodeType(node7, _).
     372 +Rule_Pattern_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_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     373 +.decl Rule_Pattern_ruby_third_parties_google_analytics(node: AST_NodeId)
     374 +Rule("ruby_third_parties_google_analytics", node) :- Rule_Pattern_ruby_third_parties_google_analytics(node).
     375 +.decl Rule_Pattern_ruby_third_parties_datadog(node: AST_NodeId)
     376 +Rule("ruby_third_parties_datadog", node) :- Rule_Pattern_ruby_third_parties_datadog(node).
     377 +Rule_Pattern_ruby_third_parties_datadog(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "set_tag"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _), AST_ParentChild(node4, 1, node6), AST_NodeType(node6, _).
     378 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Tracing"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "trace"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _), AST_ParentChild(node6, 1, node8), AST_NodeType(node8, _).
     379 +.decl Rule_Pattern_google_dataflow_templates_service_client_init(node: AST_NodeId)
     380 +Rule("google_dataflow_templates_service_client_init", node) :- Rule_Pattern_google_dataflow_templates_service_client_init(node).
     381 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "templates_service").
     382 +.decl Rule_Pattern_ruby_third_parties_elasticsearch(node: AST_NodeId)
     383 +Rule("ruby_third_parties_elasticsearch", node) :- Rule_Pattern_ruby_third_parties_elasticsearch(node).
     384 +Rule_Pattern_ruby_third_parties_elasticsearch(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "pair"), AST_NodeField(node5, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     385 +Rule_Pattern_ruby_third_parties_elasticsearch(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, "hash"), AST_ParentChild(node5, 0, node6), AST_NodeType(node6, "pair"), AST_NodeField(node6, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":body"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "body")), AST_NodeField(node6, node7, "value"), AST_NodeType(node7, _).
     386 +.decl Rule_Pattern_ruby_lang_path_using_user_input(node: AST_NodeId)
     387 +Rule("ruby_lang_path_using_user_input", node) :- Rule_Pattern_ruby_lang_path_using_user_input(node).
     388 +Rule_Pattern_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, _).
     389 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     390 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     391 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "open"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     392 +Rule_Pattern_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, _).
     393 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     394 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Util"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, _), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     395 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     396 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "+"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     397 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "binary"), AST_NodeField(node1, node2, "left"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "operator"), AST_NodeType(node3, "/"), AST_NodeField(node1, node4, "right"), AST_NodeType(node4, _).
     398 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "cd"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     399 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     400 +Rule_Pattern_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_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "default_system_path"), AST_NodeField(node1, node5, "right"), AST_NodeType(node5, _).
     401 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     402 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, _), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     403 +Rule_Pattern_ruby_lang_path_using_user_input(node1) :- AST_NodeType(node1, "element_reference"), AST_NodeField(node1, node2, "object"), AST_NodeType(node2, _), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _), AST_ParentChild(node1, 1, node4), AST_NodeType(node4, _).
     404 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "transact"), AST_NodeField(node1, node4, "block"), AST_NodeType(node4, "do_block"), !AST_NodeField(node4, _, "parameters"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     405 +Rule_Pattern_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, _), 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, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     406 +Rule_Pattern_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, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "hash"), AST_ParentChild(node4, 0, 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_NodeField(node5, node6, "value"), AST_NodeType(node6, _).
     407 +Rule_Pattern_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, _).
     408 +.decl Rule_Pattern_blowfish_init(node: AST_NodeId)
     409 +Rule("blowfish_init", node) :- Rule_Pattern_blowfish_init(node).
     410 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Blowfish"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     411 +.decl Rule_Pattern_ruby_rails_insecure_disabling_of_callback(node: AST_NodeId)
     412 +Rule("ruby_rails_insecure_disabling_of_callback", node) :- Rule_Pattern_ruby_rails_insecure_disabling_of_callback(node).
     413 +Rule_Pattern_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_NodeType(node2, _), 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, ":CurioVar1"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "CurioVar1")), AST_NodeField(node4, node5, "value"), AST_NodeType(node5, _).
     414 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(node: AST_NodeId)
     415 +Rule("ruby_lang_http_url_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(node).
     416 +Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     417 +Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     418 +Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     419 +Rule_Pattern_ruby_lang_http_url_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     420 +.decl Rule_Pattern_ruby_third_parties_clickhouse_insert_rows(node: AST_NodeId)
     421 +Rule("ruby_third_parties_clickhouse_insert_rows", node) :- Rule_Pattern_ruby_third_parties_clickhouse_insert_rows(node).
     422 +.decl Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(node: AST_NodeId)
     423 +Rule("ruby_lang_ftp_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(node).
     424 +Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     425 +Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     426 +Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     427 +Rule_Pattern_ruby_lang_ftp_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     428 +.decl Rule_Pattern_ruby_lang_weak_encryption_with_data_rc4_init(node: AST_NodeId)
     429 +Rule("ruby_lang_weak_encryption_with_data_rc4_init", node) :- Rule_Pattern_ruby_lang_weak_encryption_with_data_rc4_init(node).
     430 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     431 +.decl Rule_Pattern_ruby_lang_path_using_user_input_shell(node: AST_NodeId)
     432 +Rule("ruby_lang_path_using_user_input_shell", node) :- Rule_Pattern_ruby_lang_path_using_user_input_shell(node).
     433 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     434 +.decl Rule_Pattern_ruby_rails_http_verb_confusion(node: AST_NodeId)
     435 +Rule("ruby_rails_http_verb_confusion", node) :- Rule_Pattern_ruby_rails_http_verb_confusion(node).
     436 +Rule_Pattern_ruby_rails_http_verb_confusion(node1) :- AST_NodeType(node1, "if"), !AST_NodeField(node1, _, "consequence"), AST_NodeField(node1, node2, "condition"), 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, "identifier"), AST_NodeContent(node3, "request"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get?"), AST_NodeField(node1, node5, "alternative"), AST_NodeType(node5, "else").
     437 +Rule_Pattern_ruby_rails_http_verb_confusion(node1) :- AST_NodeType(node1, "unless"), !AST_NodeField(node1, _, "consequence"), !AST_NodeField(node1, _, "alternative"), AST_NodeField(node1, node2, "condition"), 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, "identifier"), AST_NodeContent(node3, "request"), AST_NodeField(node2, node4, "method"), AST_NodeType(node4, "identifier"), AST_NodeContent(node4, "get?").
     438 +Rule_Pattern_ruby_rails_http_verb_confusion(node1) :- AST_NodeType(node1, "unless_modifier"), AST_NodeField(node1, node2, "body"), AST_NodeType(node2, _), 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_NodeField(node3, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "get?").
     439 +.decl Rule_Pattern_ruby_lang_ssl_verification(node: AST_NodeId)
     440 +Rule("ruby_lang_ssl_verification", node) :- Rule_Pattern_ruby_lang_ssl_verification(node).
     441 +.decl Rule_Pattern_ruby_third_parties_bigquery_client(node: AST_NodeId)
     442 +Rule("ruby_third_parties_bigquery_client", node) :- Rule_Pattern_ruby_third_parties_bigquery_client(node).
     443 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Bigquery"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     444 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Bigquery"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "new").
     445 +.decl Rule_Pattern_ruby_lang_exec_using_user_input_shell(node: AST_NodeId)
     446 +Rule("ruby_lang_exec_using_user_input_shell", node) :- Rule_Pattern_ruby_lang_exec_using_user_input_shell(node).
     447 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "new").
     448 +.decl Rule_Pattern_ruby_third_parties_bigquery_table(node: AST_NodeId)
     449 +Rule("ruby_third_parties_bigquery_table", node) :- Rule_Pattern_ruby_third_parties_bigquery_table(node).
     450 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "table").
     451 +Rule_Pattern_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_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "create_table").
     452 +.decl Rule_Pattern_ruby_rails_insecure_communication(node: AST_NodeId)
     453 +Rule("ruby_rails_insecure_communication", node) :- Rule_Pattern_ruby_rails_insecure_communication(node).
     454 +.decl Rule_Pattern_google_dataflow_snapshots_client_init(node: AST_NodeId)
     455 +Rule("google_dataflow_snapshots_client_init", node) :- Rule_Pattern_google_dataflow_snapshots_client_init(node).
     456 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "snapshots").
     457 +.decl Rule_Pattern_ruby_lang_deserialization_of_user_input(node: AST_NodeId)
     458 +Rule("ruby_lang_deserialization_of_user_input", node) :- Rule_Pattern_ruby_lang_deserialization_of_user_input(node).
     459 +Rule_Pattern_ruby_lang_deserialization_of_user_input(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), AST_NodeField(node1, node2, "receiver"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "load"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     460 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "restore"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     461 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "object_load"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     462 +.decl Rule_Pattern_ruby_rails_password_length(node: AST_NodeId)
     463 +Rule("ruby_rails_password_length", node) :- Rule_Pattern_ruby_rails_password_length(node).
     464 +.decl Rule_Pattern_ruby_third_parties_honeybadger(node: AST_NodeId)
     465 +Rule("ruby_third_parties_honeybadger", node) :- Rule_Pattern_ruby_third_parties_honeybadger(node).
     466 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "notify"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     467 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "context"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     468 +Rule_Pattern_ruby_third_parties_honeybadger(node1) :- AST_NodeType(node1, "method"), !AST_NodeField(node1, _, "parameters"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, "identifier"), AST_NodeContent(node2, "to_honeybadger_context"), AST_ParentChild(node1, 0, node3), AST_NodeType(node3, _).
     469 +Rule_Pattern_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_NodeField(node1, node3, "method"), AST_NodeType(node3, "identifier"), AST_NodeContent(node3, "add_breadcrumb"), AST_NodeField(node1, node4, "arguments"), AST_NodeType(node4, "argument_list"), AST_ParentChild(node4, 0, node5), AST_NodeType(node5, _).
     470 +.decl Rule_Pattern_ruby_rails_render_using_user_input_sanitized(node: AST_NodeId)
     471 +Rule("ruby_rails_render_using_user_input_sanitized", node) :- Rule_Pattern_ruby_rails_render_using_user_input_sanitized(node).
     472 +Rule_Pattern_ruby_rails_render_using_user_input_sanitized(node1) :- AST_NodeType(node1, "call"), !AST_NodeField(node1, _, "block"), !AST_NodeField(node1, _, "receiver"), AST_NodeField(node1, node2, "method"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "arguments"), AST_NodeType(node3, "argument_list"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, _).
     473 +.decl Rule_Pattern_ruby_lang_http_url_using_user_input_url_hash(node: AST_NodeId)
     474 +Rule("ruby_lang_http_url_using_user_input_url_hash", node) :- Rule_Pattern_ruby_lang_http_url_using_user_input_url_hash(node).
     475 +Rule_Pattern_ruby_lang_http_url_using_user_input_url_hash(node1) :- AST_NodeType(node1, "hash"), AST_ParentChild(node1, 0, node2), AST_NodeType(node2, "pair"), AST_NodeField(node2, tmp0, "key"), (AST_NodeType(tmp0, "simple_symbol"), AST_NodeContent(tmp0, ":url"); AST_NodeType(tmp0, "hash_key_symbol"), AST_NodeContent(tmp0, "url")), AST_NodeField(node2, node3, "value"), AST_NodeType(node3, _).
     476 +.decl Rule_Pattern_ruby_third_parties_scout_apm(node: AST_NodeId)
     477 +Rule("ruby_third_parties_scout_apm", node) :- Rule_Pattern_ruby_third_parties_scout_apm(node).
     478 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Context"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add_user"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     479 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Context"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "add"), AST_NodeField(node1, node6, "arguments"), AST_NodeType(node6, "argument_list"), AST_ParentChild(node6, 0, node7), AST_NodeType(node7, _).
     480 +.decl Rule_Pattern_ruby_lang_http_insecure_curb(node: AST_NodeId)
     481 +Rule("ruby_lang_http_insecure_curb", node) :- Rule_Pattern_ruby_lang_http_insecure_curb(node).
     482 +Rule_Pattern_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_NodeField(node2, node4, "name"), AST_NodeType(node4, "constant"), AST_NodeContent(node4, "Easy"), AST_NodeField(node1, node5, "method"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "new").
     483 +.decl Rule_Pattern_ruby_lang_path_using_user_input_user_input(node: AST_NodeId)
     484 +Rule("ruby_lang_path_using_user_input_user_input", node) :- Rule_Pattern_ruby_lang_path_using_user_input_user_input(node).
     485 +Rule_Pattern_ruby_lang_path_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "params").
     486 +Rule_Pattern_ruby_lang_path_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "request").
     487 +Rule_Pattern_ruby_lang_path_using_user_input_user_input(node1) :- AST_NodeType(node1, "identifier"), AST_NodeContent(node1, "cookies").
     488 +Rule_Pattern_ruby_lang_path_using_user_input_user_input(node1) :- AST_NodeType(node1, "method"), AST_NodeField(node1, node2, "name"), AST_NodeType(node2, _), AST_NodeField(node1, node3, "parameters"), AST_NodeType(node3, "method_parameters"), AST_ParentChild(node3, 0, node4), AST_NodeType(node4, "keyword_parameter"), !AST_NodeField(node4, _, "value"), AST_NodeField(node4, node5, "name"), AST_NodeType(node5, "identifier"), AST_NodeContent(node5, "event"), AST_ParentChild(node3, 1, node6), AST_NodeType(node6, "keyword_parameter"), !AST_NodeField(node6, _, "value"), AST_NodeField(node6, node7, "name"), AST_NodeType(node7, "identifier"), AST_NodeContent(node7, "context").
     489 +.decl Rule_Pattern_google_dataflow_client_init(node: AST_NodeId)
     490 +Rule("google_dataflow_client_init", node) :- Rule_Pattern_google_dataflow_client_init(node).
     491 +Rule_Pattern_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_NodeField(node3, node5, "name"), AST_NodeType(node5, "constant"), AST_NodeContent(node5, "Cloud"), AST_NodeField(node2, node6, "name"), AST_NodeType(node6, "constant"), AST_NodeContent(node6, "Dataflow"), AST_NodeField(node1, node7, "method"), AST_NodeType(node7, _).
    327 492   
  • ■ ■ ■ ■ ■
    souffle/rules.dl
    1 1  #include "./ast.dl"
    2 2   
    3  -.type RuleName <: symbol
     3 + 
     4 +.type Rule_Name <: symbol
     5 +.type Rule_VariableName <: symbol
     6 + 
     7 + 
     8 +.decl Rule(rule: Rule_Name, node: AST_NodeId)
     9 + 
     10 + 
     11 +.decl Rule_Match(rule: Rule_Name, node: AST_NodeId, location: AST_Location)
     12 +.output Rule_Match
     13 + 
     14 +Rule_Match(rule, node, location) :- Rule(rule, node), AST_NodeLocation(node, location).
    4 15   
    5  -.decl Rule(rule: RuleName, node: AST_Node)
    6 16   
    7  -.decl RuleMatch(name: RuleName, location: AST_Location)
    8  -RuleMatch(name, location) :- Rule(name, node), AST_NodeLocation(node, location).
    9  -.output RuleMatch
     17 +// .decl Rule_MatchVariable(rule: Rule_Name, node: AST_Node, variable: Rule_VariableName, variableNode: AST_Node)
     18 +// .output Rule_MatchVariable
     19 + 
     20 +// Rule_MatchVariable(rule, node, variable, variableNode) :- Rule(rule, node), AST_NodeLocation(node, location).
    10 21   
    11 22   
    12 23  #include "./generated/rules.dl"
    skipped 1 lines
Please wait...
Page is in error, reload to recover