<!--
 * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <!--
    These resources should match the order and groups used in Main.html.
    -->
    <script src="External/CodeMirror/codemirror.js"></script>
    <script src="External/CodeMirror/css.js"></script>
    <script src="External/CodeMirror/htmlmixed.js"></script>
    <script src="External/CodeMirror/javascript.js"></script>
    <script src="External/Esprima/esprima.js"></script>

    <script src="Base/WebInspector.js"></script>
    <script src="Base/Platform.js"></script>
    <script src="Base/Debouncer.js"></script>
    <script src="Base/DebuggableType.js"></script>
    <script src="Base/LinkedList.js"></script>
    <script src="Base/ListMultimap.js"></script>
    <script src="Base/Multimap.js"></script>
    <script src="Base/Object.js"></script>
    <script src="Base/Throttler.js"></script>

    <script src="Test/TestHarness.js"></script>
    <script src="Test/FrontendTestHarness.js"></script>
    <script src="Test/TestSuite.js"></script>

    <script src="Test/Test.js"></script>
    <script src="Controllers/AppControllerBase.js"></script>
    <script src="Test/TestAppController.js"></script>
    <script src="Test/TestUtilities.js"></script>

    <script src="Base/BlobUtilities.js"></script>
    <script src="Base/DOMUtilities.js"></script>
    <script src="Base/EventListener.js"></script>
    <script src="Base/EventListenerSet.js"></script>
    <script src="Base/FileUtilities.js"></script>
    <script src="Base/ImageUtilities.js"></script>
    <script src="Base/MIMETypeUtilities.js"></script>
    <script src="Base/ObjectStore.js"></script>
    <script src="Base/URLUtilities.js"></script>
    <script src="Base/Utilities.js"></script>
    <script src="Base/Setting.js"></script>
    <script src="Base/YieldableTask.js"></script>

    <script src="Protocol/ProtocolTracer.js"></script>
    <script src="Protocol/LoggingProtocolTracer.js"></script>
    <script src="Protocol/InspectorBackend.js"></script>

    <script src="Protocol/Connection.js"></script>
    <script src="Protocol/InspectorFrontendAPI.js"></script>
    <script src="Protocol/LoadInspectorBackendCommands.js"></script>
    <script src="Protocol/MessageDispatcher.js"></script>
    <script src="Protocol/Target.js"></script>

    <script src="Protocol/DirectBackendTarget.js"></script>
    <script src="Protocol/MultiplexingBackendTarget.js"></script>
    <script src="Protocol/JavaScriptContextTarget.js"></script>
    <script src="Protocol/PageTarget.js"></script>
    <script src="Protocol/WorkerTarget.js"></script>

    <script src="Protocol/InspectorObserver.js"></script>
    <script src="Protocol/ApplicationCacheObserver.js"></script>
    <script src="Protocol/CPUProfilerObserver.js"></script>
    <script src="Protocol/CSSObserver.js"></script>
    <script src="Protocol/CanvasObserver.js"></script>
    <script src="Protocol/ConsoleObserver.js"></script>
    <script src="Protocol/DOMObserver.js"></script>
    <script src="Protocol/DOMStorageObserver.js"></script>
    <script src="Protocol/DatabaseObserver.js"></script>
    <script src="Protocol/DebuggerObserver.js"></script>
    <script src="Protocol/HeapObserver.js"></script>
    <script src="Protocol/InspectorObserver.js"></script>
    <script src="Protocol/LayerTreeObserver.js"></script>
    <script src="Protocol/MemoryObserver.js"></script>
    <script src="Protocol/NetworkObserver.js"></script>
    <script src="Protocol/PageObserver.js"></script>
    <script src="Protocol/RemoteObject.js"></script>
    <script src="Protocol/RuntimeObserver.js"></script>
    <script src="Protocol/ScriptProfilerObserver.js"></script>
    <script src="Protocol/TargetObserver.js"></script>
    <script src="Protocol/TimelineObserver.js"></script>
    <script src="Protocol/WorkerObserver.js"></script>

    <script src="Models/BreakpointAction.js"></script>
    <script src="Models/ConsoleMessage.js"></script>
    <script src="Models/Instrument.js"></script>
    <script src="Models/SourceCode.js"></script>
    <script src="Models/SourceCodeLocation.js"></script>
    <script src="Models/SourceCodePosition.js"></script>
    <script src="Models/Timeline.js"></script>
    <script src="Models/TimelineRange.js"></script>
    <script src="Models/TimelineRecord.js"></script>

    <script src="Models/Resource.js"></script>
    <script src="Models/Script.js"></script>
    <script src="Models/LocalScript.js"></script>

    <script src="Models/Breakpoint.js"></script>
    <script src="Models/CPUInstrument.js"></script>
    <script src="Models/CPUTimeline.js"></script>
    <script src="Models/CPUTimelineRecord.js"></script>
    <script src="Models/CSSCompletions.js"></script>
    <script src="Models/CSSGrouping.js"></script>
    <script src="Models/CSSKeywordCompletions.js"></script>
    <script src="Models/CSSProperty.js"></script>
    <script src="Models/CSSRule.js"></script>
    <script src="Models/CSSSelector.js"></script>
    <script src="Models/CSSStyleDeclaration.js"></script>
    <script src="Models/CSSStyleSheet.js"></script>
    <script src="Models/CallFrame.js"></script>
    <script src="Models/CallingContextTree.js"></script>
    <script src="Models/CallingContextTreeNode.js"></script>
    <script src="Models/Canvas.js"></script>
    <script src="Models/Collection.js"></script>
    <script src="Models/CollectionEntry.js"></script>
    <script src="Models/CollectionEntryPreview.js"></script>
    <script src="Models/CollectionTypes.js"></script>
    <script src="Models/Color.js"></script>
    <script src="Models/ConsoleCommandResultMessage.js"></script>
    <script src="Models/Cookie.js"></script>
    <script src="Models/CookieStorageObject.js"></script>
    <script src="Models/DOMBreakpoint.js"></script>
    <script src="Models/DOMNode.js"></script>
    <script src="Models/DOMNodeStyles.js"></script>
    <script src="Models/DOMStorageObject.js"></script>
    <script src="Models/DOMTree.js"></script>
    <script src="Models/DebuggerData.js"></script>
    <script src="Models/EventBreakpoint.js"></script>
    <script src="Models/ExecutionContext.js"></script>
    <script src="Models/ExecutionContextList.js"></script>
    <script src="Models/FPSInstrument.js"></script>
    <script src="Models/Frame.js"></script>
    <script src="Models/GarbageCollection.js"></script>
    <script src="Models/Geometry.js"></script>
    <script src="Models/Gradient.js"></script>
    <script src="Models/HeapAllocationsInstrument.js"></script>
    <script src="Models/HeapAllocationsTimelineRecord.js"></script>
    <script src="Models/IndexedDatabase.js"></script>
    <script src="Models/IndexedDatabaseObjectStore.js"></script>
    <script src="Models/IndexedDatabaseObjectStoreIndex.js"></script>
    <script src="Models/IssueMessage.js"></script>
    <script src="Models/Layer.js"></script>
    <script src="Models/LayoutInstrument.js"></script>
    <script src="Models/LayoutTimelineRecord.js"></script>
    <script src="Models/LazySourceCodeLocation.js"></script>
    <script src="Models/LocalResourceOverride.js"></script>
    <script src="Models/LoggingChannel.js"></script>
    <script src="Models/MediaInstrument.js"></script>
    <script src="Models/MediaTimelineRecord.js"></script>
    <script src="Models/MemoryCategory.js"></script>
    <script src="Models/MemoryInstrument.js"></script>
    <script src="Models/MemoryPressureEvent.js"></script>
    <script src="Models/MemoryTimeline.js"></script>
    <script src="Models/MemoryTimelineRecord.js"></script>
    <script src="Models/NetworkInstrument.js"></script>
    <script src="Models/NetworkTimeline.js"></script>
    <script src="Models/ObjectPreview.js"></script>
    <script src="Models/Probe.js"></script>
    <script src="Models/ProbeSet.js"></script>
    <script src="Models/ProbeSetDataFrame.js"></script>
    <script src="Models/ProbeSetDataTable.js"></script>
    <script src="Models/Profile.js"></script>
    <script src="Models/ProfileNode.js"></script>
    <script src="Models/ProfileNodeCall.js"></script>
    <script src="Models/PropertyDescriptor.js"></script>
    <script src="Models/PropertyPreview.js"></script>
    <script src="Models/Recording.js"></script>
    <script src="Models/RecordingAction.js"></script>
    <script src="Models/RecordingFrame.js"></script>
    <script src="Models/RecordingInitialStateAction.js"></script>
    <script src="Models/RecordingState.js"></script>
    <script src="Models/Redirect.js"></script>
    <script src="Models/RenderingFrameTimelineRecord.js"></script>
    <script src="Models/ResourceCollection.js"></script>
    <script src="Models/ResourceQueryMatch.js"></script>
    <script src="Models/ResourceQueryResult.js"></script>
    <script src="Models/ResourceTimelineRecord.js"></script>
    <script src="Models/ResourceTimingData.js"></script>
    <script src="Models/Revision.js"></script>
    <script src="Models/ScopeChainNode.js"></script>
    <script src="Models/ScriptInstrument.js"></script>
    <script src="Models/ScriptSyntaxTree.js"></script>
    <script src="Models/ScriptTimelineRecord.js"></script>
    <script src="Models/ServerTimingEntry.js"></script>
    <script src="Models/ShaderProgram.js"></script>
    <script src="Models/SourceCodeRevision.js"></script>
    <script src="Models/SourceCodeTimeline.js"></script>
    <script src="Models/SourceMap.js"></script>
    <script src="Models/StackTrace.js"></script>
    <script src="Models/TextRange.js"></script>
    <script src="Models/TimelineMarker.js"></script>
    <script src="Models/TimelineRecording.js"></script>
    <script src="Models/URLBreakpoint.js"></script>
    <script src="Models/WebSocketResource.js"></script>
    <script src="Models/WrappedPromise.js"></script>

    <script src="Models/LocalResource.js"></script>
    <script src="Models/SourceMapResource.js"></script>

    <script src="Models/AuditTestBase.js"></script>
    <script src="Models/AuditTestCase.js"></script>
    <script src="Models/AuditTestGroup.js"></script>
    <script src="Models/AuditTestResultBase.js"></script>
    <script src="Models/AuditTestCaseResult.js"></script>
    <script src="Models/AuditTestGroupResult.js"></script>

    <script src="Proxies/FormatterWorkerProxy.js"></script>
    <script src="Proxies/HeapSnapshotDiffProxy.js"></script>
    <script src="Proxies/HeapSnapshotEdgeProxy.js"></script>
    <script src="Proxies/HeapSnapshotNodeProxy.js"></script>
    <script src="Proxies/HeapSnapshotProxy.js"></script>
    <script src="Proxies/HeapSnapshotWorkerProxy.js"></script>

    <script src="Controllers/AuditManager.js"></script>
    <script src="Controllers/ApplicationCacheManager.js"></script>
    <script src="Controllers/BreakpointLogMessageLexer.js"></script>
    <script src="Controllers/CSSManager.js"></script>
    <script src="Controllers/CanvasManager.js"></script>
    <script src="Controllers/ConsoleManager.js"></script>
    <script src="Controllers/DOMDebuggerManager.js"></script>
    <script src="Controllers/DOMManager.js"></script>
    <script src="Controllers/DOMStorageManager.js"></script>
    <script src="Controllers/DatabaseManager.js"></script>
    <script src="Controllers/DebuggerManager.js"></script>
    <script src="Controllers/FormatterSourceMap.js"></script>
    <script src="Controllers/HARBuilder.js"></script>
    <script src="Controllers/HeapManager.js"></script>
    <script src="Controllers/IndexedDBManager.js"></script>
    <script src="Controllers/LayerTreeManager.js"></script>
    <script src="Controllers/MemoryManager.js"></script>
    <script src="Controllers/NetworkManager.js"></script>
    <script src="Controllers/RuntimeManager.js"></script>
    <script src="Controllers/TargetManager.js"></script>
    <script src="Controllers/TimelineManager.js"></script>
    <script src="Controllers/WorkerManager.js"></script>

    <script src="Controllers/ResourceQueryController.js"></script>
    <script src="Controllers/SelectionController.js"></script>
    <script src="Workers/Formatter/FormatterContentBuilder.js"></script>
    <script src="Views/CodeMirrorAdditions.js"></script>
    <script src="Views/EditingSupport.js"></script>
    <script src="Views/View.js"></script>

    <script src="Views/Resizer.js"></script>
    <script src="Views/Table.js"></script>
    <script src="Views/TableColumn.js"></script>
    <script src="Views/TreeElement.js"></script>
    <script src="Views/TreeOutline.js"></script>

    <script type="text/javascript">
        WI.sharedApp = new WI.TestAppController;
        WI.sharedApp.initialize();

        // Debug logging is synchronous on the test page.
        InspectorTest.forceDebugLogging = false;

        // Tee all TestHarness commands to stderr from within the Inspector.
        InspectorTest.dumpActivityToSystemConsole = false;

        // Best used in combination with dumpActivityToSystemConsole.
        InspectorBackend.dumpInspectorProtocolMessages = false;
    </script>
</head>
<body>
</body>
</html>
