<?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.

-->
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
<filesystem>
    <folder name="xml">
        <folder name="entities">
            <folder name="NetBeans">
                <file name="DTD_Editor_Macros_settings_1_0" url="nbres:/org/netbeans/modules/editor/macros/storage/EditorMacros-1_0.dtd">
                    <attr name="hint.originalPublicID" stringvalue="-//NetBeans//DTD Editor Macros settings 1.0//EN"/>
                </file>
                <file name="DTD_Editor_Macros_settings_1_1" url="nbres:/org/netbeans/modules/editor/macros/storage/EditorMacros-1_1.dtd">
                    <attr name="hint.originalPublicID" stringvalue="-//NetBeans//DTD Editor Macros settings 1.1//EN"/>
                </file>
            </folder>
        </folder>
    </folder>
    <folder name="Editors">
        <folder name="Actions">
            <file name="org-netbeans-modules-editor-macros-MacroDialogSupport$StartMacroRecordingAction.instance"/>
            <file name="org-netbeans-modules-editor-macros-MacroDialogSupport$StopMacroRecordingAction.instance"/>
            <file name="org-netbeans-modules-editor-macros-MacroDialogSupport$RunMacroAction.instance"/>
        </folder>
        <folder name="Toolbars">
            <folder name="Default">
                <file name="start-macro-recording">
                    <attr name="position" intvalue="18000"/>
                </file>
                <file name="stop-macro-recording">
                    <attr name="position" intvalue="19000"/>
                </file>
            </folder>
        </folder>
    </folder>
    
</filesystem>
