<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<additionalHeaders>
  <rst_style>
    <firstLine>..</firstLine>
    <beforeEachLine>..&#x20;</beforeEachLine>
    <endLine>..EOL</endLine>
    <firstLineDetectionPattern>..</firstLineDetectionPattern>
    <lastLineDetectionPattern>..EOL</lastLineDetectionPattern>
    <allowBlankLines>false</allowBlankLines>
    <isMultiline>true</isMultiline>
    <padLines>false</padLines>
  </rst_style>
  <javadoc_style>
    <firstLine>/**</firstLine>
    <beforeEachLine> * </beforeEachLine>
    <endLine> */</endLine>
    <firstLineDetectionPattern>(\s|\t)*/\*.*$</firstLineDetectionPattern>
    <lastLineDetectionPattern>.*\*/(\s|\t)*$</lastLineDetectionPattern>
    <allowBlankLines>false</allowBlankLines>
    <isMultiline>true</isMultiline>
    <padLines>false</padLines>
  </javadoc_style>
  <ftl_style>
    <firstLine>&lt;#--</firstLine>
    <beforeEachLine>// </beforeEachLine>
    <endLine>--&gt;</endLine>
    <firstLineDetectionPattern>(\s|\t)*/\*.*$</firstLineDetectionPattern>
    <lastLineDetectionPattern>.*\*/(\s|\t)*$</lastLineDetectionPattern>
    <allowBlankLines>false</allowBlankLines>
    <isMultiline>true</isMultiline>
    <padLines>false</padLines>
  </ftl_style>
</additionalHeaders>
