<?xml version="1.0"?>
<!--
  ============LICENSE_START=======================================================
  Simulator
  ================================================================================
  Copyright (C) 2019 Nokia. All rights reserved.
  ================================================================================
  Licensed 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.
  ============LICENSE_END=========================================================
  -->


<!DOCTYPE suppressions PUBLIC
        "-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN"
        "https://checkstyle.org/dtds/suppressions_1_0.dtd">

<suppressions>
    <suppress checks=".*" files="\.java" lines="1-20"
    />
    <suppress checks=".*" files="\.properties"
    />
    <suppress checks="javadoc" files="\.java"
    />
    <suppress checks="LineLength" files="\.java"
    />
    <suppress checks="HiddenField" files="\.java"
    />
    <suppress checks="FinalClass" files="\.java"
    />
    <suppress checks="FinalParameters" files="\.java"
    />
    <suppress checks="AvoidInlineConditionals" files="\.java"
    />
    <suppress checks="DesignForExtension" files="\.java"
    />
</suppressions>
